--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Node / ReticulumProjects / MeshChatX.git / files / meshchatx / src / frontend / components / messages / ConversationViewer.vue
Displaying Raw • Download
meshchatx/src/frontend/components/messages/ConversationViewer.vue 4b9c16f6c3c8de59bf94da550189b2484b396da8 (4b9c16f6) Text, 249.65 KB
T8b949e<!-- SPDX-License-Identifier: 0BSD AND MIT -->
Tb4b4b4<Tff7b72templateTb4b4b4>
T8b949e<!-- peer selected -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3selectedPeerTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex flex-col h-full bg-white dark:bg-zinc-950 overflow-hidden transition-all relative"
Tb4b4b4>
T8b949e<!-- banished overlay -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3GlobalStateTff7b72?Tb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3banished_effect_enabled Tff7b72&& Te6edf3isSelectedPeerBlockedTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"banished-overlay"
Tb4b4b4:Te6edf3styleTff7b72=Ta5d6ff"Tb4b4b4{ Te6edf3backgroundTff7b72: Tb4b4b4(Te6edf3GlobalStateTff7b72?Tb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3banished_color Tff7b72|| Ta5d6ff'#dc2626'Tb4b4b4) Tff7b72+ Ta5d6ff'33' Tb4b4b4}Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3classTff7b72=Ta5d6ff"banished-text !opacity-100 !text-white !shadow-lg !bg-red-600 !px-4 !py-2 !rounded-xl !border-2 !tracking-widest"
Tb4b4b4:Te6edf3styleTff7b72=Ta5d6ff"Tb4b4b4{
Ta5d6ff'background-color'Tff7b72: Te6edf3GlobalStateTff7b72?Tb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3banished_color Tff7b72|| Ta5d6ff'#dc2626'Tb4b4b4,
Ta5d6ff'border-color'Tff7b72: Te6edf3GlobalStateTff7b72?Tb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3banished_color Tff7b72|| Ta5d6ff'#dc2626'Tb4b4b4,
Tb4b4b4}Ta5d6ff"
Tb4b4b4>Tff7b72{{ Te6edf3GlobalStateTff7b72?Tb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3banished_text Tff7b72|| Ta5d6ff"BANISHED" Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72span
Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72ConversationPeerHeader
Te6edf3refTff7b72=Ta5d6ff"conversationPeerHeader"
Tb4b4b4:Te6edf3selected-peerTff7b72=Ta5d6ff"Te6edf3selectedPeerTa5d6ff"
Tb4b4b4:Te6edf3compact-peer-actionsTff7b72=Ta5d6ff"Te6edf3compactPeerActionsTa5d6ff"
Tb4b4b4:Te6edf3has-failed-or-cancelled-messagesTff7b72=Ta5d6ff"Te6edf3hasFailedOrCancelledMessagesTa5d6ff"
Tb4b4b4:Te6edf3message-icon-styleTff7b72=Ta5d6ff"Te6edf3messageIconStyleTa5d6ff"
Tb4b4b4:Te6edf3selected-peer-pathTff7b72=Ta5d6ff"Te6edf3selectedPeerPathTa5d6ff"
Tb4b4b4:Te6edf3selected-peer-signal-metricsTff7b72=Ta5d6ff"Te6edf3selectedPeerSignalMetricsTa5d6ff"
Tb4b4b4:Te6edf3selected-peer-lxmf-stamp-infoTff7b72=Ta5d6ff"Te6edf3selectedPeerLxmfStampInfoTa5d6ff"
Tb4b4b4@Te6edf3edit-display-nameTff7b72=Ta5d6ff"Te6edf3updateCustomDisplayNameTa5d6ff"
Tb4b4b4@Te6edf3copy-hashTff7b72=Ta5d6ff"Te6edf3copyHashTa5d6ff"
Tb4b4b4@Te6edf3destination-path-clickTff7b72=Ta5d6ff"Te6edf3onDestinationPathClickTa5d6ff"
Tb4b4b4@Te6edf3signal-metrics-clickTff7b72=Ta5d6ff"Te6edf3onSignalMetricsClickTa5d6ff"
Tb4b4b4@Te6edf3stamp-info-clickTff7b72=Ta5d6ff"Te6edf3onStampInfoClickTa5d6ff"
Tb4b4b4@Te6edf3conversation-deletedTff7b72=Ta5d6ff"Te6edf3onConversationDeletedTa5d6ff"
Tb4b4b4@Te6edf3popoutTff7b72=Ta5d6ff"Te6edf3openConversationPopoutTa5d6ff"
Tb4b4b4@Te6edf3retry-failedTff7b72=Ta5d6ff"Te6edf3retryAllFailedOrCancelledMessagesTa5d6ff"
Tb4b4b4@Te6edf3open-telemetry-historyTff7b72=Ta5d6ff"Te6edf3isTelemetryHistoryModalOpen Tff7b72= Tff7b72trueTa5d6ff"
Tb4b4b4@Te6edf3start-callTff7b72=Ta5d6ff"Te6edf3onStartCallTa5d6ff"
Tb4b4b4@Te6edf3share-contactTff7b72=Ta5d6ff"Te6edf3openShareContactModalTa5d6ff"
Tb4b4b4@Te6edf3closeTff7b72=Ta5d6ff"Te6edf3closeTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72TelemetryHistoryModal
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3isTelemetryHistoryModalOpenTa5d6ff"
Te6edf3v-modelTb4b4b4:Te6edf3show-telemetry-in-chatTff7b72=Ta5d6ff"Te6edf3showTelemetryInChatTa5d6ff"
Tb4b4b4:Te6edf3telemetry-itemsTff7b72=Ta5d6ff"Te6edf3selectedPeerTelemetryItemsTa5d6ff"
Tb4b4b4:Te6edf3format-time-agoTff7b72=Ta5d6ff"Te6edf3formatTimeAgoTa5d6ff"
Tb4b4b4:Te6edf3gradient-id-suffixTff7b72=Ta5d6ff"Te6edf3telemetryModalGradientSuffixTa5d6ff"
Tb4b4b4@Te6edf3location-clickTff7b72=Ta5d6ff"Te6edf3viewLocationOnMapTa5d6ff"
Tb4b4b4/Tb4b4b4>
T8b949e<!-- Share Contact Modal -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isShareContactModalOpenTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"fixed inset-0 z-[100] flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3selfTff7b72=Ta5d6ff"Te6edf3isShareContactModalOpen Tff7b72= Tff7b72falseTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"w-full max-w-md bg-white dark:bg-zinc-900 rounded-2xl shadow-2xl overflow-hidden"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"px-6 py-4 border-b border-gray-100 dark:border-zinc-800 flex items-center justify-between"Tb4b4b4>
Tb4b4b4<Tff7b72h3 Te6edf3classTff7b72=Ta5d6ff"text-lg font-bold text-gray-900 dark:text-white"Tb4b4b4>Share ContactTb4b4b4<Tb4b4b4/Tff7b72h3Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"text-gray-400 hover:text-gray-500 dark:hover:text-zinc-300 transition-colors"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3isShareContactModalOpen Tff7b72= Tff7b72falseTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"close" Te6edf3classTff7b72=Ta5d6ff"size-6" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-6"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"mb-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"relative"Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3contactsSearchTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"Search contacts..."
Te6edf3classTff7b72=Ta5d6ff"block w-full rounded-lg border-0 py-2 pl-10 text-gray-900 dark:text-white shadow-sm ring-1 ring-inset ring-gray-300 dark:ring-zinc-800 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-blue-600 sm:text-sm dark:bg-zinc-900"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"pointer-events-none absolute inset-y-0 left-0 flex items-center pl-3"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"magnify" Te6edf3classTff7b72=Ta5d6ff"size-5 text-gray-400" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"max-h-64 overflow-y-auto space-y-2"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3contact Tff7b72in Te6edf3filteredContactsTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3contactTb4b4b4.Te6edf3idTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"w-full flex items-center gap-3 p-3 rounded-xl hover:bg-gray-50 dark:hover:bg-zinc-800 transition-colors text-left"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3shareContactTb4b4b4(Te6edf3contactTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"size-10 rounded-full bg-blue-50 dark:bg-blue-900/20 text-blue-500 flex items-center justify-center shrink-0"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"account" Te6edf3classTff7b72=Ta5d6ff"size-6" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"min-w-0"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"font-bold text-gray-900 dark:text-white truncate"Tb4b4b4>
Tff7b72{{ Te6edf3contactTb4b4b4.Te6edf3name Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-[10px] text-gray-500 dark:text-zinc-500 font-mono truncate"Tb4b4b4>
Tff7b72{{ Te6edf3contactTb4b4b4.Te6edf3remote_identity_hash Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3contactTb4b4b4.Te6edf3lxmf_addressTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"text-[9px] text-gray-400 dark:text-zinc-500 font-mono truncate"
Tb4b4b4>
LXMF: Tff7b72{{ Te6edf3contactTb4b4b4.Te6edf3lxmf_address Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3contactTb4b4b4.Te6edf3lxst_addressTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"text-[9px] text-gray-400 dark:text-zinc-500 font-mono truncate"
Tb4b4b4>
LXST: Tff7b72{{ Te6edf3contactTb4b4b4.Te6edf3lxst_address Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"flex flex-col flex-1 min-h-0 min-w-0 relative"
Tb4b4b4@Te6edf3dragoverTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Te6edf3onComposerImageDragOverTa5d6ff"
Tb4b4b4@Te6edf3dragleaveTff7b72=Ta5d6ff"Te6edf3onComposerImageDragLeaveTa5d6ff"
Tb4b4b4@Te6edf3dropTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Te6edf3onComposerImageDropTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-showTff7b72=Ta5d6ff"Te6edf3composerImageDropActiveTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"pointer-events-none absolute inset-0 z-[5] border-2 border-dashed border-blue-400/70 bg-blue-500/[0.06] dark:bg-blue-400/[0.08]"
Te6edf3aria-hiddenTff7b72=Ta5d6ff"true"
Tb4b4b4/Tb4b4b4>
T8b949e<!-- stranger trust banner -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isStrangerPeer Tff7b72&& Tff7b72!Te6edf3strangerBannerDismissed Tff7b72&& Te6edf3showUnknownContactBannerTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"mx-3 mt-2 mb-0 p-3 bg-amber-50 dark:bg-amber-900/20 border border-amber-300 dark:border-amber-700 rounded-lg flex items-center gap-3 text-sm"
Tb4b4b4>
Tb4b4b4<Tff7b72svg
Te6edf3xmlnsTff7b72=Ta5d6ff"http://www.w3.org/2000/svg"
Te6edf3fillTff7b72=Ta5d6ff"none"
Te6edf3viewBoxTff7b72=Ta5d6ff"0 0 24 24"
Te6edf3stroke-widthTff7b72=Ta5d6ff"1.5"
Te6edf3strokeTff7b72=Ta5d6ff"currentColor"
Te6edf3classTff7b72=Ta5d6ff"w-5 h-5 text-amber-600 dark:text-amber-400 flex-shrink-0"
Tb4b4b4>
Tb4b4b4<Tff7b72path
Te6edf3stroke-linecapTff7b72=Ta5d6ff"round"
Te6edf3stroke-linejoinTff7b72=Ta5d6ff"round"
Te6edf3dTff7b72=Ta5d6ff"M12 9v3.75m0 3.75h.008v-.008H12v.008Zm9.303-5.626a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72svgTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"flex-1 text-amber-900 dark:text-amber-200"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"messages.stranger_banner_text"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"px-3 py-1 text-xs font-medium rounded-md bg-amber-600 hover:bg-amber-700 text-white transition-colors"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3addStrangerAsContactTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"messages.add_to_contacts"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3classTff7b72=Ta5d6ff"px-2 py-1 text-xs text-amber-600 dark:text-amber-400 hover:text-amber-800 dark:hover:text-amber-200 transition-colors"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3strangerBannerDismissed Tff7b72= Tff7b72trueTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"messages.dismiss"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- chat items -->
Tb4b4b4<Tff7b72div
Te6edf3idTff7b72=Ta5d6ff"messages"
Te6edf3refTff7b72=Ta5d6ff"messagesScroll"
Te6edf3classTff7b72=Ta5d6ff"flex-1 min-h-0 overflow-y-scroll bg-white dark:bg-zinc-950 transition-none"
Te6edf3styleTff7b72=Ta5d6ff"overflow-anchor: none; overscroll-behavior-y: contain"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tff7b72!Te6edf3messagesViewportReady Tff7b72? Ta5d6ff'invisible opacity-0 pointer-events-none select-none' Tff7b72: Ta5d6ff''Ta5d6ff"
Tb4b4b4:Te6edf3data-message-list-modeTff7b72=Ta5d6ff"Te6edf3useVirtualMessageList Tff7b72? Ta5d6ff'virtual' Tff7b72: Ta5d6ff'reverse'Ta5d6ff"
Tb4b4b4:Te6edf3aria-busyTff7b72=Ta5d6ff"Tff7b72!Te6edf3messagesViewportReady Tff7b72? Ta5d6ff'true' Tff7b72: Tff7b72undefinedTa5d6ff"
Tb4b4b4@Te6edf3scrollTff7b72=Ta5d6ff"Te6edf3onMessagesScrollTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3selectedPeerChatItemsTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"min-w-0 px-4 py-6"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3useVirtualMessageList Tff7b72? Ta5d6ff'relative flex flex-col' Tff7b72: Ta5d6ff''Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72template Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3useVirtualMessageListTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col flex-col-reverse min-w-0"Tb4b4b4>
Tb4b4b4<Tff7b72template Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3entry Tff7b72in Te6edf3selectedPeerChatDisplayGroupsTa5d6ff" Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3entryTb4b4b4.Te6edf3keyTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72ConversationMessageEntry Tb4b4b4:Te6edf3entryTff7b72=Ta5d6ff"Te6edf3entryTa5d6ff" Tb4b4b4:Te6edf3cvTff7b72=Ta5d6ff"Te6edf3conversationViewerSelfTa5d6ff" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
T8b949e<!-- load previous -->
Tb4b4b4<Tff7b72button
Te6edf3v-showTff7b72=Ta5d6ff"Tff7b72!Te6edf3isLoadingPrevious Tff7b72&& Te6edf3hasMorePreviousTa5d6ff"
Te6edf3idTff7b72=Ta5d6ff"load-previous"
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2 mx-auto mt-4 bg-white dark:bg-zinc-900 border border-gray-200 dark:border-zinc-800 px-4 py-2 hover:bg-gray-50 dark:hover:bg-zinc-800 rounded-full shadow-sm text-sm font-medium text-gray-700 dark:text-zinc-300 transition-colors"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3loadPreviousTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72svg
Te6edf3xmlnsTff7b72=Ta5d6ff"http://www.w3.org/2000/svg"
Te6edf3fillTff7b72=Ta5d6ff"none"
Te6edf3viewBoxTff7b72=Ta5d6ff"0 0 24 24"
Te6edf3stroke-widthTff7b72=Ta5d6ff"1.5"
Te6edf3strokeTff7b72=Ta5d6ff"currentColor"
Te6edf3classTff7b72=Ta5d6ff"w-4 h-4"
Tb4b4b4>
Tb4b4b4<Tff7b72path
Te6edf3stroke-linecapTff7b72=Ta5d6ff"round"
Te6edf3stroke-linejoinTff7b72=Ta5d6ff"round"
Te6edf3dTff7b72=Ta5d6ff"m15 11.25-3-3m0 0-3 3m3-3v7.5M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72svgTb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Load PreviousTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72template Te6edf3v-elseTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-showTff7b72=Ta5d6ff"Tff7b72!Te6edf3isLoadingPrevious Tff7b72&& Te6edf3hasMorePreviousTa5d6ff"
Te6edf3idTff7b72=Ta5d6ff"load-previous"
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"absolute top-2 left-1/2 z-20 -translate-x-1/2 flex items-center gap-2 bg-white/95 dark:bg-zinc-950/95 backdrop-blur border border-gray-200 dark:border-zinc-800 px-4 py-2 hover:bg-gray-50 dark:hover:bg-zinc-800 rounded-full shadow-sm text-sm font-medium text-gray-700 dark:text-zinc-300 transition-colors"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3loadPreviousTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72svg
Te6edf3xmlnsTff7b72=Ta5d6ff"http://www.w3.org/2000/svg"
Te6edf3fillTff7b72=Ta5d6ff"none"
Te6edf3viewBoxTff7b72=Ta5d6ff"0 0 24 24"
Te6edf3stroke-widthTff7b72=Ta5d6ff"1.5"
Te6edf3strokeTff7b72=Ta5d6ff"currentColor"
Te6edf3classTff7b72=Ta5d6ff"w-4 h-4"
Tb4b4b4>
Tb4b4b4<Tff7b72path
Te6edf3stroke-linecapTff7b72=Ta5d6ff"round"
Te6edf3stroke-linejoinTff7b72=Ta5d6ff"round"
Te6edf3dTff7b72=Ta5d6ff"m15 11.25-3-3m0 0-3 3m3-3v7.5M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72svgTb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Load PreviousTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72ConversationMessageListVirtual
Te6edf3refTff7b72=Ta5d6ff"messageListVirtual"
Tb4b4b4:Te6edf3groupsTff7b72=Ta5d6ff"Te6edf3selectedPeerChatDisplayGroupsOldestFirstTa5d6ff"
Tb4b4b4:Te6edf3get-scroll-elementTff7b72=Ta5d6ff"Te6edf3getMessagesScrollElementTa5d6ff"
Tb4b4b4:Te6edf3cvTff7b72=Ta5d6ff"Te6edf3conversationViewerSelfTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72Transition Te6edf3nameTff7b72=Ta5d6ff"scroll-fab"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3autoScrollOnNewMessage Tff7b72&& Te6edf3messagesViewportReadyTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex justify-center pb-1.5 pt-0.5 shrink-0"
Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"flex items-center justify-center size-8 rounded-full bg-white/90 dark:bg-zinc-800/90 backdrop-blur border border-gray-200 dark:border-zinc-700 shadow text-gray-500 dark:text-zinc-400 hover:bg-gray-100 dark:hover:bg-zinc-700 hover:text-gray-700 dark:hover:text-zinc-200 transition-colors"
Te6edf3titleTff7b72=Ta5d6ff"Scroll to bottom"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3scrollMessagesToBottomTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"chevron-down" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72TransitionTb4b4b4>
Tb4b4b4<Tff7b72Transition Te6edf3nameTff7b72=Ta5d6ff"scroll-fab"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3reactionPickerChatItemTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"absolute inset-0 z-40" Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3selfTff7b72=Ta5d6ff"Te6edf3closeReactionPickerTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3refTff7b72=Ta5d6ff"reactionPickerPanel"
Te6edf3classTff7b72=Ta5d6ff"absolute w-[min(24rem,calc(100%-1rem))] rounded-2xl overflow-hidden border border-gray-200 dark:border-zinc-700 shadow-2xl bg-white dark:bg-zinc-900"
Tb4b4b4:Te6edf3styleTff7b72=Ta5d6ff"Te6edf3reactionPickerStyleTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"flex items-center justify-between px-3 py-2 border-b border-gray-100 dark:border-zinc-800 cursor-grab active:cursor-grabbing select-none"
Tb4b4b4@Te6edf3mousedownTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Te6edf3onReactionPickerDragStartTa5d6ff"
Tb4b4b4@Te6edf3touchstartTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Te6edf3onReactionPickerDragStartTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-xs font-medium text-gray-500 dark:text-zinc-400"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"messages.react"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"p-0.5 rounded hover:bg-gray-100 dark:hover:bg-zinc-800 text-gray-400 dark:text-zinc-500"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3closeReactionPickerTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"close" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72emoji-picker
Tb4b4b4:Te6edf3data-sourceTff7b72=Ta5d6ff"Te6edf3emojiPickerDataUrlTa5d6ff"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3emojiPickerThemeClassTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"reaction-emoji-picker"
Tb4b4b4@Te6edf3emoji-clickTff7b72=Ta5d6ff"Te6edf3onReactionPickerEmojiClickTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72TransitionTb4b4b4>
T8b949e<!-- send message -->
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"w-full border-t border-gray-200 dark:border-zinc-800 bg-white dark:bg-zinc-950 px-3 sm:px-4 py-2.5"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"w-full"Tb4b4b4>
T8b949e<!-- banished user notification -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isSelectedPeerBlockedTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"mb-3 p-3 bg-yellow-50 dark:bg-yellow-900/20 border border-yellow-200 dark:border-yellow-800 rounded-lg flex items-center gap-2"
Tb4b4b4>
Tb4b4b4<Tff7b72svg
Te6edf3xmlnsTff7b72=Ta5d6ff"http://www.w3.org/2000/svg"
Te6edf3fillTff7b72=Ta5d6ff"none"
Te6edf3viewBoxTff7b72=Ta5d6ff"0 0 24 24"
Te6edf3stroke-widthTff7b72=Ta5d6ff"2"
Te6edf3strokeTff7b72=Ta5d6ff"currentColor"
Te6edf3classTff7b72=Ta5d6ff"w-5 h-5 text-yellow-600 dark:text-yellow-400 flex-shrink-0"
Tb4b4b4>
Tb4b4b4<Tff7b72path
Te6edf3stroke-linecapTff7b72=Ta5d6ff"round"
Te6edf3stroke-linejoinTff7b72=Ta5d6ff"round"
Te6edf3dTff7b72=Ta5d6ff"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72svgTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-sm text-yellow-800 dark:text-yellow-200"
Tb4b4b4>You have banished this user. They cannot send you messages or establish links.Tb4b4b4<Tb4b4b4/Tff7b72span
Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- message composer -->
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-2 mb-2"Tb4b4b4>
T8b949e<!-- image attachments (mosaic, separate from text field) -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newMessageImagesTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"w-full max-w-[min(280px,100%)] rounded-xl overflow-hidden ring-1 ring-black/10 dark:ring-white/10 shadow-sm bg-black/5 dark:bg-white/5"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newMessageImagesTb4b4b4.Te6edf3length Tff7b72=== T79c0ff1Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"relative group"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"block w-full overflow-hidden focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-500/60"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Te6edf3openImageTb4b4b4(Te6edf3newMessageImageUrlsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4, Te6edf3newMessageImageUrlsTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72img
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newMessageImageUrlsTb4b4b4[T79c0ff0Tb4b4b4]Ta5d6ff"
Tb4b4b4:Te6edf3srcTff7b72=Ta5d6ff"Te6edf3newMessageImageUrlsTb4b4b4[T79c0ff0Tb4b4b4]Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"max-h-52 w-full object-contain object-center bg-black/5 dark:bg-white/5"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"absolute top-1.5 right-1.5 inline-flex items-center justify-center w-6 h-6 rounded-full bg-white dark:bg-zinc-900 border border-gray-200 dark:border-zinc-800 text-gray-600 dark:text-gray-200 hover:bg-red-100 hover:text-red-600 dark:hover:bg-red-900/40 shadow-md"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Te6edf3removeImageAttachmentTb4b4b4(T79c0ff0Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"close" Te6edf3classTff7b72=Ta5d6ff"w-3.5 h-3.5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-else-ifTff7b72=Ta5d6ff"Te6edf3newMessageImagesTb4b4b4.Te6edf3length Tff7b72=== T79c0ff2Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-2 gap-0.5"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-forTff7b72=Ta5d6ff"Tb4b4b4(Te6edf3imageTb4b4b4, Te6edf3indexTb4b4b4) Tff7b72in Te6edf3newMessageImagesTa5d6ff" Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3indexTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"relative group"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"relative block aspect-square min-h-[88px] w-full overflow-hidden focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-500/60"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Te6edf3openImageTb4b4b4(Te6edf3newMessageImageUrlsTb4b4b4[Te6edf3indexTb4b4b4]Tb4b4b4, Te6edf3newMessageImageUrlsTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72img
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newMessageImageUrlsTb4b4b4[Te6edf3indexTb4b4b4]Ta5d6ff"
Tb4b4b4:Te6edf3srcTff7b72=Ta5d6ff"Te6edf3newMessageImageUrlsTb4b4b4[Te6edf3indexTb4b4b4]Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"h-full w-full object-cover"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"absolute top-1.5 right-1.5 inline-flex items-center justify-center w-6 h-6 rounded-full bg-black/55 text-white hover:bg-black/70 shadow-md"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Te6edf3removeImageAttachmentTb4b4b4(Te6edf3indexTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"close" Te6edf3classTff7b72=Ta5d6ff"w-3.5 h-3.5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-else-ifTff7b72=Ta5d6ff"Te6edf3newMessageImagesTb4b4b4.Te6edf3length Tff7b72=== T79c0ff3Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-2 gap-0.5"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3index Tff7b72in Tb4b4b4[T79c0ff0Tb4b4b4, T79c0ff1Tb4b4b4]Ta5d6ff" Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3indexTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"relative group"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"relative block aspect-square min-h-[88px] w-full overflow-hidden focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-500/60"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Te6edf3openImageTb4b4b4(Te6edf3newMessageImageUrlsTb4b4b4[Te6edf3indexTb4b4b4]Tb4b4b4, Te6edf3newMessageImageUrlsTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72img
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newMessageImageUrlsTb4b4b4[Te6edf3indexTb4b4b4]Ta5d6ff"
Tb4b4b4:Te6edf3srcTff7b72=Ta5d6ff"Te6edf3newMessageImageUrlsTb4b4b4[Te6edf3indexTb4b4b4]Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"h-full w-full object-cover"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"absolute top-1.5 right-1.5 inline-flex items-center justify-center w-6 h-6 rounded-full bg-black/55 text-white hover:bg-black/70 shadow-md"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Te6edf3removeImageAttachmentTb4b4b4(Te6edf3indexTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"close" Te6edf3classTff7b72=Ta5d6ff"w-3.5 h-3.5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"relative group col-span-2"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"relative block aspect-[2/1] max-h-44 w-full min-h-[72px] overflow-hidden focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-500/60"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Te6edf3openImageTb4b4b4(Te6edf3newMessageImageUrlsTb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4, Te6edf3newMessageImageUrlsTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72img
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newMessageImageUrlsTb4b4b4[T79c0ff2Tb4b4b4]Ta5d6ff"
Tb4b4b4:Te6edf3srcTff7b72=Ta5d6ff"Te6edf3newMessageImageUrlsTb4b4b4[T79c0ff2Tb4b4b4]Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"h-full w-full object-cover"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"absolute top-1.5 right-1.5 inline-flex items-center justify-center w-6 h-6 rounded-full bg-black/55 text-white hover:bg-black/70 shadow-md"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Te6edf3removeImageAttachmentTb4b4b4(T79c0ff2Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"close" Te6edf3classTff7b72=Ta5d6ff"w-3.5 h-3.5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-else Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-2 gap-0.5"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3slot Tff7b72in Tffa657MathTb4b4b4.Te6edf3minTb4b4b4(T79c0ff4Tb4b4b4, Te6edf3newMessageImagesTb4b4b4.Te6edf3lengthTb4b4b4)Ta5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Ta5d6ff'compose-mosaic-' Tff7b72+ Te6edf3slotTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"relative group"
Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"relative block aspect-square min-h-[88px] w-full overflow-hidden focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-500/60"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Te6edf3openImageTb4b4b4(Te6edf3newMessageImageUrlsTb4b4b4[Te6edf3slot Tff7b72- T79c0ff1Tb4b4b4]Tb4b4b4, Te6edf3newMessageImageUrlsTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72img
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newMessageImageUrlsTb4b4b4[Te6edf3slot Tff7b72- T79c0ff1Tb4b4b4]Ta5d6ff"
Tb4b4b4:Te6edf3srcTff7b72=Ta5d6ff"Te6edf3newMessageImageUrlsTb4b4b4[Te6edf3slot Tff7b72- T79c0ff1Tb4b4b4]Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"h-full w-full object-cover"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3slot Tff7b72=== T79c0ff4 Tff7b72&& Te6edf3newMessageImagesTb4b4b4.Te6edf3length Tff7b72> T79c0ff4Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"pointer-events-none absolute inset-0 flex items-center justify-center bg-black/55 text-2xl font-bold text-white"
Tb4b4b4>
+Tff7b72{{ Te6edf3newMessageImagesTb4b4b4.Te6edf3length Tff7b72- T79c0ff4 Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"absolute top-1.5 right-1.5 inline-flex items-center justify-center w-6 h-6 rounded-full bg-black/55 text-white hover:bg-black/70 shadow-md"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Te6edf3removeImageAttachmentTb4b4b4(Te6edf3slot Tff7b72- T79c0ff1Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"close" Te6edf3classTff7b72=Ta5d6ff"w-3.5 h-3.5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- audio attachment -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newMessageAudioTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"attachment-card"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"attachment-card__body w-full"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"attachment-card__title"Tb4b4b4>Voice NoteTb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"attachment-card__meta mb-2"Tb4b4b4>
Tff7b72{{ Te6edf3formatBytesTb4b4b4(Te6edf3newMessageAudioTb4b4b4.Te6edf3audio_blobTb4b4b4.Te6edf3sizeTb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72AudioWaveformPlayer Tb4b4b4:Te6edf3srcTff7b72=Ta5d6ff"Te6edf3newMessageAudioTb4b4b4.Te6edf3audio_preview_urlTa5d6ff" Tb4b4b4:Te6edf3is-outboundTff7b72=Ta5d6ff"Tff7b72trueTa5d6ff" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3typeTff7b72=Ta5d6ff"button" Te6edf3classTff7b72=Ta5d6ff"attachment-card__remove" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3removeAudioAttachmentTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"delete" Te6edf3classTff7b72=Ta5d6ff"w-4 h-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- file attachments -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3newMessageFilesTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"flex flex-wrap gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3file Tff7b72in Te6edf3newMessageFilesTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3fileTb4b4b4.Te6edf3name Tff7b72+ Te6edf3fileTb4b4b4.Te6edf3sizeTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"attachment-chip"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Te6edf3icon-nameTff7b72=Ta5d6ff"paperclip"
Te6edf3classTff7b72=Ta5d6ff"w-4 h-4 text-gray-500 dark:text-gray-300"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-800 dark:text-gray-200 truncate max-w-[160px]"Tb4b4b4>
Tff7b72{{ Te6edf3fileTb4b4b4.Te6edf3name Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-gray-400"Tb4b4b4>Tff7b72{{
Te6edf3formatBytesTb4b4b4(Te6edf3fileTb4b4b4.Te6edf3sizeTb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"attachment-chip__remove"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3removeFileAttachmentTb4b4b4(Te6edf3fileTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"close" Te6edf3classTff7b72=Ta5d6ff"w-3.5 h-3.5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- text input + send -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2 min-w-0"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-click-outsideTff7b72=Ta5d6ff"Tb4b4b4{ Te6edf3handlerTff7b72: Te6edf3onStickerPickerClickOutsideTb4b4b4, Te6edf3captureTff7b72: Tff7b72true Tb4b4b4}Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"relative flex-1 min-w-0"
Tb4b4b4>
Tb4b4b4<Tff7b72textarea
Te6edf3idTff7b72=Ta5d6ff"message-input"
Te6edf3refTff7b72=Ta5d6ff"message-input"
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3newMessageTextTa5d6ff"
Tb4b4b4:Te6edf3readonlyTff7b72=Ta5d6ff"Te6edf3isTranslatingMessageTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"bg-white dark:bg-zinc-900 border border-gray-200 dark:border-zinc-800 text-gray-900 dark:text-zinc-100 text-sm rounded-xl focus:ring-2 focus:ring-blue-500/50 focus:border-blue-500 block w-full min-w-0 pl-3 sm:pl-4 pr-[76px] py-2.5 resize-none shadow-sm transition-all placeholder:text-gray-400 dark:placeholder:text-zinc-500 min-h-[44px] max-h-[200px] overflow-y-auto leading-snug"
Te6edf3rowsTff7b72=Ta5d6ff"1"
Te6edf3spellcheckTff7b72=Ta5d6ff"true"
Tb4b4b4:Te6edf3placeholderTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'messages.send_placeholder'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3keydownTb4b4b4.Te6edf3enterTb4b4b4.Te6edf3exactTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Te6edf3onEnterPressedTa5d6ff"
Tb4b4b4@Te6edf3keydownTb4b4b4.Te6edf3enterTb4b4b4.Te6edf3shiftTb4b4b4.Te6edf3exactTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Te6edf3onShiftEnterPressedTa5d6ff"
Tb4b4b4@Te6edf3pasteTff7b72=Ta5d6ff"Te6edf3onMessagePasteTa5d6ff"
Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72textareaTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"absolute right-1.5 top-1/2 -translate-y-1/2 flex items-center gap-0.5"Tb4b4b4>
Tb4b4b4<Tff7b72AddAudioButton
Tb4b4b4:Te6edf3is-recording-audio-attachmentTff7b72=Ta5d6ff"Te6edf3isRecordingAudioAttachmentTa5d6ff"
Tb4b4b4@Te6edf3start-recordingTff7b72=Ta5d6ff"Te6edf3startRecordingAudioAttachmentTb4b4b4(Te6edf3$eventTb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3stop-recordingTff7b72=Ta5d6ff"Te6edf3stopRecordingAudioAttachmentTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-[10px] whitespace-nowrap"Tb4b4b4>
Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"messages.recording"Tb4b4b4, Tb4b4b4{
Te6edf3durationTff7b72: Te6edf3audioAttachmentRecordingDurationTb4b4b4,
Tb4b4b4}Tb4b4b4)
Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72AddAudioButtonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"inline-flex items-center justify-center rounded-lg p-1.5 text-gray-500 dark:text-zinc-400 hover:bg-gray-100 dark:hover:bg-zinc-800 hover:text-gray-800 dark:hover:text-zinc-100 transition-colors"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'stickers.picker_tooltip'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Te6edf3toggleStickerPickerTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"emoticon-outline" Te6edf3classTff7b72=Ta5d6ff"w-5 h-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isStickerPickerOpenTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"absolute bottom-full right-0 mb-2 z-50 w-[min(320px,85vw)] max-h-[min(420px,70vh)] flex flex-col rounded-2xl border border-gray-200 dark:border-zinc-700 bg-white dark:bg-zinc-900 shadow-xl overflow-hidden"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4{
Ta5d6ff'ring-2 ring-blue-500/50 ring-offset-2 ring-offset-white dark:ring-offset-zinc-900'Tff7b72:
Tb4b4b4(Te6edf3stickerDropActive Tff7b72&& Te6edf3emojiStickerTab Tff7b72=== Ta5d6ff'stickers'Tb4b4b4) Tff7b72||
Tb4b4b4(Te6edf3gifDropActive Tff7b72&& Te6edf3emojiStickerTab Tff7b72=== Ta5d6ff'gifs'Tb4b4b4)Tb4b4b4,
Tb4b4b4}Ta5d6ff"
@Te6edf3click.Te6edf3stop
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"flex shrink-0 border-b border-gray-200 dark:border-zinc-700 p-1 gap-0.5"
Te6edf3roleTff7b72=Ta5d6ff"tablist"
Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3roleTff7b72=Ta5d6ff"tab"
Tb4b4b4:Te6edf3aria-selectedTff7b72=Ta5d6ff"Te6edf3emojiStickerTab Tff7b72=== Ta5d6ff'emoji'Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex-1 rounded-lg px-2 py-1.5 text-xs font-medium transition-colors"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"
Te6edf3emojiStickerTab Tff7b72=== Ta5d6ff'emoji'
Tff7b72? Ta5d6ff'bg-blue-100 dark:bg-blue-950/60 text-blue-800 dark:text-blue-200'
Tff7b72: Ta5d6ff'text-gray-600 dark:text-zinc-400 hover:bg-gray-100 dark:hover:bg-zinc-800'
Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3emojiStickerTab Tff7b72= Ta5d6ff'emoji'Ta5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"stickers.tab_emojis"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3roleTff7b72=Ta5d6ff"tab"
Tb4b4b4:Te6edf3aria-selectedTff7b72=Ta5d6ff"Te6edf3emojiStickerTab Tff7b72=== Ta5d6ff'stickers'Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex-1 rounded-lg px-2 py-1.5 text-xs font-medium transition-colors"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"
Te6edf3emojiStickerTab Tff7b72=== Ta5d6ff'stickers'
Tff7b72? Ta5d6ff'bg-blue-100 dark:bg-blue-950/60 text-blue-800 dark:text-blue-200'
Tff7b72: Ta5d6ff'text-gray-600 dark:text-zinc-400 hover:bg-gray-100 dark:hover:bg-zinc-800'
Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3emojiStickerTab Tff7b72= Ta5d6ff'stickers'Ta5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"stickers.tab_stickers"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3roleTff7b72=Ta5d6ff"tab"
Tb4b4b4:Te6edf3aria-selectedTff7b72=Ta5d6ff"Te6edf3emojiStickerTab Tff7b72=== Ta5d6ff'gifs'Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex-1 rounded-lg px-2 py-1.5 text-xs font-medium transition-colors"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"
Te6edf3emojiStickerTab Tff7b72=== Ta5d6ff'gifs'
Tff7b72? Ta5d6ff'bg-blue-100 dark:bg-blue-950/60 text-blue-800 dark:text-blue-200'
Tff7b72: Ta5d6ff'text-gray-600 dark:text-zinc-400 hover:bg-gray-100 dark:hover:bg-zinc-800'
Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3onGifsTabSelectedTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"gifs.tab_gifs"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-showTff7b72=Ta5d6ff"Te6edf3emojiStickerTab Tff7b72=== Ta5d6ff'emoji'Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"min-h-0 flex-1 flex flex-col overflow-hidden p-0"
Te6edf3roleTff7b72=Ta5d6ff"tabpanel"
Tb4b4b4>
Tb4b4b4<Tff7b72emoji-picker
Tb4b4b4:Te6edf3data-sourceTff7b72=Ta5d6ff"Te6edf3emojiPickerDataUrlTa5d6ff"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3emojiPickerThemeClassTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"compose-emoji-picker"
Tb4b4b4@Te6edf3emoji-clickTff7b72=Ta5d6ff"Te6edf3onEmojiPickerClickTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-showTff7b72=Ta5d6ff"Te6edf3emojiStickerTab Tff7b72=== Ta5d6ff'stickers'Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"min-h-0 flex-1 overflow-y-auto p-2"
Te6edf3roleTff7b72=Ta5d6ff"tabpanel"
Tb4b4b4@Te6edf3dragoverTb4b4b4.Te6edf3preventTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Te6edf3onStickerPanelDragOverTa5d6ff"
Tb4b4b4@Te6edf3dragleaveTb4b4b4.Te6edf3preventTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Te6edf3onStickerPanelDragLeaveTa5d6ff"
Tb4b4b4@Te6edf3dropTb4b4b4.Te6edf3preventTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Te6edf3onStickerPanelDropTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3refTff7b72=Ta5d6ff"sticker-upload-input"
Te6edf3typeTff7b72=Ta5d6ff"file"
Te6edf3acceptTff7b72=Ta5d6ff"image/png,image/jpeg,image/gif,image/webp,image/bmp,video/webm,application/x-tgsticker,.png,.jpg,.jpeg,.gif,.webp,.bmp,.webm,.tgs"
Te6edf3multiple
Te6edf3classTff7b72=Ta5d6ff"hidden"
Tb4b4b4@Te6edf3changeTff7b72=Ta5d6ff"Te6edf3onStickerUploadInputChangeTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3userStickerPacksTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex shrink-0 gap-1 overflow-x-auto pb-2 mb-2 border-b border-gray-200 dark:border-zinc-800"
Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"shrink-0 rounded-lg px-2 py-1 text-[11px] font-medium border"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"
Te6edf3activeStickerPackId Tff7b72=== Tff7b72null
Tff7b72? Ta5d6ff'bg-blue-100 dark:bg-blue-950/60 border-blue-300 dark:border-blue-700 text-blue-800 dark:text-blue-200'
Tff7b72: Ta5d6ff'border-transparent text-gray-600 dark:text-zinc-400 hover:bg-gray-100 dark:hover:bg-zinc-800'
Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3activeStickerPackId Tff7b72= Tff7b72nullTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"sticker_packs.all"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3pack Tff7b72in Te6edf3userStickerPacksTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3packTb4b4b4.Te6edf3idTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"shrink-0 rounded-lg px-2 py-1 text-[11px] font-medium border max-w-[120px] truncate"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"
Te6edf3activeStickerPackId Tff7b72=== Te6edf3packTb4b4b4.Te6edf3id
Tff7b72? Ta5d6ff'bg-blue-100 dark:bg-blue-950/60 border-blue-300 dark:border-blue-700 text-blue-800 dark:text-blue-200'
Tff7b72: Ta5d6ff'border-transparent text-gray-600 dark:text-zinc-400 hover:bg-gray-100 dark:hover:bg-zinc-800'
Ta5d6ff"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3packTb4b4b4.Te6edf3titleTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3activeStickerPackId Tff7b72= Te6edf3packTb4b4b4.Te6edf3idTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3packTb4b4b4.Te6edf3title Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3visibleStickersTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-4 gap-2 mb-2"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3s Tff7b72in Te6edf3visibleStickersTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3sTb4b4b4.Te6edf3idTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"aspect-square rounded-lg overflow-hidden border border-gray-200 dark:border-zinc-700 hover:ring-2 hover:ring-blue-500/50 bg-gray-50 dark:bg-zinc-800"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3sTb4b4b4.Te6edf3name Tff7b72|| Te6edf3sTb4b4b4.Te6edf3emoji Tff7b72|| Ta5d6ff'Sticker'Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3addStickerFromLibraryTb4b4b4(Te6edf3sTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72StickerView Tb4b4b4:Te6edf3srcTff7b72=Ta5d6ff"Te6edf3stickerImageUrlTb4b4b4(Te6edf3sTb4b4b4.Te6edf3idTb4b4b4)Ta5d6ff" Tb4b4b4:Te6edf3image-typeTff7b72=Ta5d6ff"Te6edf3sTb4b4b4.Te6edf3image_typeTa5d6ff" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3visibleStickersTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"text-center text-sm text-gray-500 dark:text-zinc-400 mb-2 px-1"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"stickers.empty_library"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"w-full rounded-xl border-2 border-dashed border-gray-300 dark:border-zinc-600 px-2 py-2 text-xs hover:border-blue-400"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"
Te6edf3stickerDropActive
Tff7b72? Ta5d6ff'border-blue-500 bg-blue-50/70 dark:bg-blue-950/40'
Tff7b72: Ta5d6ff''
Ta5d6ff"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3isStickerUploadingTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3triggerStickerUploadInputTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center justify-center gap-1"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"upload" Te6edf3classTff7b72=Ta5d6ff"size-4 text-blue-500" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"stickers.upload_short"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-showTff7b72=Ta5d6ff"Te6edf3emojiStickerTab Tff7b72=== Ta5d6ff'gifs'Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"min-h-0 flex-1 overflow-y-auto p-2"
Te6edf3roleTff7b72=Ta5d6ff"tabpanel"
Tb4b4b4@Te6edf3dragoverTb4b4b4.Te6edf3preventTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Te6edf3onGifPanelDragOverTa5d6ff"
Tb4b4b4@Te6edf3dragleaveTb4b4b4.Te6edf3preventTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Te6edf3onGifPanelDragLeaveTa5d6ff"
Tb4b4b4@Te6edf3dropTb4b4b4.Te6edf3preventTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Te6edf3onGifPanelDropTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3refTff7b72=Ta5d6ff"gif-upload-input"
Te6edf3typeTff7b72=Ta5d6ff"file"
Te6edf3acceptTff7b72=Ta5d6ff"image/gif,image/webp,.gif,.webp"
Te6edf3multiple
Te6edf3classTff7b72=Ta5d6ff"hidden"
Tb4b4b4@Te6edf3changeTff7b72=Ta5d6ff"Te6edf3onGifUploadInputChangeTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3userGifsTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-2 gap-2 mb-2"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3g Tff7b72in Te6edf3userGifsTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3gTb4b4b4.Te6edf3idTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"relative aspect-video rounded-lg overflow-hidden border border-gray-200 dark:border-zinc-700 hover:ring-2 hover:ring-blue-500/50 group"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3gTb4b4b4.Te6edf3name Tff7b72|| Ta5d6ff'GIF'Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3addGifFromLibraryTb4b4b4(Te6edf3gTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72InViewAnimatedImg
Tb4b4b4:Te6edf3srcTff7b72=Ta5d6ff"Te6edf3gifImageUrlTb4b4b4(Te6edf3gTb4b4b4.Te6edf3idTb4b4b4)Ta5d6ff"
Te6edf3fit-parent
Te6edf3img-classTff7b72=Ta5d6ff"w-full h-full object-contain bg-gray-50 dark:bg-zinc-800"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3gTb4b4b4.Te6edf3usage_count Tff7b72> T79c0ff0Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"pointer-events-none absolute bottom-1 right-1 rounded-full bg-black/60 text-white text-[10px] px-1.5 py-0.5"
Tb4b4b4>
Tff7b72{{ Te6edf3gTb4b4b4.Te6edf3usage_count Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3userGifsTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"text-center text-sm text-gray-500 dark:text-zinc-400 mb-2 px-1"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"gifs.empty_library"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"w-full rounded-xl border-2 border-dashed border-gray-300 dark:border-zinc-600 px-3 py-3 text-left transition-colors hover:border-blue-400 hover:bg-blue-50/60 dark:hover:bg-blue-950/30"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"
Te6edf3gifDropActive Tff7b72? Ta5d6ff'border-blue-500 bg-blue-50/70 dark:bg-blue-950/40' Tff7b72: Ta5d6ff''
Ta5d6ff"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3isGifUploadingTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3triggerGifUploadInputTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-start gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Te6edf3icon-nameTff7b72=Ta5d6ff"upload"
Te6edf3classTff7b72=Ta5d6ff"size-5 shrink-0 text-blue-500 mt-0.5"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"min-w-0"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs font-medium text-gray-800 dark:text-zinc-100"Tb4b4b4>
Tff7b72{{
Te6edf3userGifsTb4b4b4.Te6edf3length Tff7b72> T79c0ff0
Tff7b72? Te6edf3$tTb4b4b4(Ta5d6ff"gifs.add_more_hint"Tb4b4b4)
Tff7b72: Te6edf3$tTb4b4b4(Ta5d6ff"gifs.drop_or_click_hint"Tb4b4b4)
Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isGifUploadingTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"text-[11px] text-blue-600 dark:text-blue-400 mt-1"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"common.loading"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"shrink-0 flex items-center"Tb4b4b4>
Tb4b4b4<Tff7b72SendMessageButton
Tb4b4b4:Te6edf3is-sending-messageTff7b72=Ta5d6ff"Tff7b72falseTa5d6ff"
Tb4b4b4:Te6edf3can-send-messageTff7b72=Ta5d6ff"Te6edf3canSendMessageTa5d6ff"
Tb4b4b4:Te6edf3delivery-methodTff7b72=Ta5d6ff"Te6edf3newMessageDeliveryMethodTa5d6ff"
Tb4b4b4:Te6edf3compactTff7b72=Ta5d6ff"Te6edf3compactSendLayoutTa5d6ff"
Tb4b4b4:Te6edf3sending-tooltipTff7b72=Ta5d6ff"Te6edf3sendMessagePathfindingTooltipTa5d6ff"
Tb4b4b4@Te6edf3sendTff7b72=Ta5d6ff"Te6edf3sendMessageTa5d6ff"
Tb4b4b4@Te6edf3delivery-method-changedTff7b72=Ta5d6ff"Te6edf3newMessageDeliveryMethod Tff7b72= Te6edf3$eventTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- reply preview -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3replyingToTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"mt-2 p-2 rounded-xl bg-gray-50 dark:bg-zinc-800/50 border border-gray-200 dark:border-zinc-700/50 flex items-center gap-3 animate-in fade-in slide-in-from-bottom-2 duration-200"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1 min-w-0 border-l-2 border-blue-500 pl-3"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-1 text-[10px] font-bold text-blue-500 uppercase tracking-wider mb-0.5"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"reply" Te6edf3classTff7b72=Ta5d6ff"size-3" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"messages.replying_to"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-600 dark:text-zinc-400 truncate italic"Tb4b4b4>
Tff7b72{{ Te6edf3replyingToTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3content Tff7b72|| Ta5d6ff"(Attachment)" Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"p-1.5 hover:bg-gray-200 dark:hover:bg-zinc-700 rounded-lg transition-colors text-gray-400 hover:text-gray-600 dark:hover:text-zinc-200"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3cancelReplyTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"close" Te6edf3classTff7b72=Ta5d6ff"w-4 h-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- action button -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-wrap gap-2 items-center mt-2"Tb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3typeTff7b72=Ta5d6ff"button" Te6edf3classTff7b72=Ta5d6ff"attachment-action-button" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3addFilesToMessageTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"paperclip-plus" Te6edf3classTff7b72=Ta5d6ff"w-4 h-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"hidden sm:inline"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"messages.add_files"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"attachment-action-button"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'messages.paste_from_clipboard'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3pasteFromClipboardTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"content-paste" Te6edf3classTff7b72=Ta5d6ff"w-4 h-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"hidden sm:inline"Tb4b4b4>PasteTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72AddImageButton Tb4b4b4@Te6edf3add-imageTff7b72=Ta5d6ff"Te6edf3onImageSelectedTa5d6ff" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"attachment-action-button"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'messages.share_location'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3shareLocationTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"map-marker" Te6edf3classTff7b72=Ta5d6ff"w-4 h-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"hidden sm:inline"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"messages.location"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"attachment-action-button"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'messages.request_location'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3requestLocationTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"crosshairs-question" Te6edf3classTff7b72=Ta5d6ff"w-4 h-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"hidden sm:inline"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"messages.request"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"attachment-action-button"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'messages.generate_paper_message'Tb4b4b4)Ta5d6ff"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Tff7b72!Te6edf3canSendMessage Tff7b72|| Te6edf3isGeneratingPaperMessageTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3generatePaperMessageFromCompositionTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72template Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isGeneratingPaperMessageTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"size-4 border-2 border-blue-500/20 border-t-blue-500 rounded-full animate-spin"
Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"hidden sm:inline"Tb4b4b4>Generating...Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72template Te6edf3v-elseTb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"qrcode-plus" Te6edf3classTff7b72=Ta5d6ff"w-4 h-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"hidden sm:inline"Tb4b4b4>LXMTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3hasTranslator Tff7b72&& Te6edf3newMessageTextTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"attachment-action-button"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'translator.translate'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3translateMessageTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"translate" Te6edf3classTff7b72=Ta5d6ff"w-4 h-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"hidden sm:inline"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"translator.translate"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- hidden file input for selecting files -->
Tb4b4b4<Tff7b72input
Te6edf3refTff7b72=Ta5d6ff"file-input"
Te6edf3typeTff7b72=Ta5d6ff"file"
Te6edf3multiple
Te6edf3acceptTff7b72=Ta5d6ff"*/*,image/*"
Te6edf3styleTff7b72=Ta5d6ff"display: none"
Tb4b4b4@Te6edf3changeTff7b72=Ta5d6ff"Te6edf3onFileInputChangeTa5d6ff"
Tb4b4b4/Tb4b4b4>
T8b949e<!-- Message Context Menu (Teleport to body to avoid overflow clipping) -->
Tb4b4b4<Tff7b72Teleport Te6edf3toTff7b72=Ta5d6ff"body"Tb4b4b4>
Tb4b4b4<Tff7b72ContextMenuPanel
Te6edf3v-click-outsideTff7b72=Ta5d6ff"Tb4b4b4{
Te6edf3handlerTff7b72: Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3messageContextMenuTb4b4b4.Te6edf3justOpenedTb4b4b4) Te6edf3messageContextMenuTb4b4b4.Te6edf3show Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3captureTff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Ta5d6ff"
Tb4b4b4:Te6edf3showTff7b72=Ta5d6ff"Te6edf3messageContextMenuTb4b4b4.Te6edf3showTa5d6ff"
Tb4b4b4:Te6edf3xTff7b72=Ta5d6ff"Te6edf3messageContextMenuTb4b4b4.Te6edf3xTa5d6ff"
Tb4b4b4:Te6edf3yTff7b72=Ta5d6ff"Te6edf3messageContextMenuTb4b4b4.Te6edf3yTa5d6ff"
Te6edf3panel-classTff7b72=Ta5d6ff"z-[200]"
Tb4b4b4>
Tb4b4b4<Tff7b72ContextMenuItem Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3replyToMessageTb4b4b4(Te6edf3messageContextMenuTb4b4b4.Te6edf3chatItemTb4b4b4)Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"reply" Te6edf3classTff7b72=Ta5d6ff"size-4 text-indigo-500" Tb4b4b4/Tb4b4b4>
Reply
Tb4b4b4<Tb4b4b4/Tff7b72ContextMenuItemTb4b4b4>
Tb4b4b4<Tff7b72ContextMenuItem
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3messageContextMenuTb4b4b4.Te6edf3openedFromBubble Tff7b72&& Te6edf3copyableMessagePlainTextTb4b4b4(Te6edf3messageContextMenuTb4b4b4.Te6edf3chatItemTb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3copyMessageFromContextMenuTb4b4b4(Te6edf3messageContextMenuTb4b4b4.Te6edf3chatItemTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"content-copy" Te6edf3classTff7b72=Ta5d6ff"size-4 text-gray-500 dark:text-zinc-400" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"messages.copy_message"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72ContextMenuItemTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3messageContextMenuTb4b4b4.Te6edf3chatItem Tff7b72&& Tff7b72!Te6edf3messageContextMenuTb4b4b4.Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTff7b72?Tb4b4b4.Te6edf3is_reactionTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"px-3 py-2 border-t border-gray-100 dark:border-zinc-700"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-semibold uppercase tracking-wide text-gray-500 dark:text-zinc-400 mb-1.5"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"messages.react"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-wrap gap-1"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-forTff7b72=Ta5d6ff"Tb4b4b4(Te6edf3emoTb4b4b4, Te6edf3emiTb4b4b4) Tff7b72in Te6edf3columbaReactionEmojisTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3emiTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"text-lg leading-none px-1.5 py-0.5 rounded-lg hover:bg-gray-100 dark:hover:bg-zinc-700 transition-colors"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3emoTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3sendReactionEmojiFromMenuTb4b4b4(Te6edf3messageContextMenuTb4b4b4.Te6edf3chatItemTb4b4b4, Te6edf3emoTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3emo Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"text-lg leading-none px-1.5 py-0.5 rounded-lg hover:bg-gray-100 dark:hover:bg-zinc-700 transition-colors text-gray-400 dark:text-zinc-500"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'messages.react'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"
Te6edf3openReactionPickerTb4b4b4(Te6edf3messageContextMenuTb4b4b4.Te6edf3chatItemTb4b4b4)Tb4b4b4;
Te6edf3messageContextMenuTb4b4b4.Te6edf3show Tff7b72= Tff7b72falseTb4b4b4;
Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"emoticon-plus-outline" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72ContextMenuItem
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"
Te6edf3showRawMessageTb4b4b4(Te6edf3messageContextMenuTb4b4b4.Te6edf3chatItemTb4b4b4)Tb4b4b4;
Te6edf3messageContextMenuTb4b4b4.Te6edf3show Tff7b72= Tff7b72falseTb4b4b4;
Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"code-json" Te6edf3classTff7b72=Ta5d6ff"size-4 text-gray-400" Tb4b4b4/Tb4b4b4>
View Raw LXM
Tb4b4b4<Tb4b4b4/Tff7b72ContextMenuItemTb4b4b4>
Tb4b4b4<Tff7b72ContextMenuItem
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3messageContextMenuTb4b4b4.Te6edf3chatItemTff7b72?Tb4b4b4.Te6edf3lxmf_messageTff7b72?Tb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3imageTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3saveMessageImageToStickersTb4b4b4(Te6edf3messageContextMenuTb4b4b4.Te6edf3chatItemTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"bookmark-plus-outline" Te6edf3classTff7b72=Ta5d6ff"size-4 text-teal-500" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"stickers.save_to_library"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72ContextMenuItemTb4b4b4>
Tb4b4b4<Tff7b72ContextMenuItem
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3canSaveMessageImageAsGifTb4b4b4(Te6edf3messageContextMenuTb4b4b4.Te6edf3chatItemTb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3saveMessageImageToGifsTb4b4b4(Te6edf3messageContextMenuTb4b4b4.Te6edf3chatItemTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"file-gif-box" Te6edf3classTff7b72=Ta5d6ff"size-4 text-pink-500" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"gifs.save_to_library"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72ContextMenuItemTb4b4b4>
Tb4b4b4<Tff7b72ContextMenuItem
Te6edf3v-ifTff7b72=Ta5d6ff"
Te6edf3messageContextMenuTb4b4b4.Te6edf3chatItemTff7b72?Tb4b4b4.Te6edf3is_outbound Tff7b72&&
Tb4b4b4[Ta5d6ff'failed'Tb4b4b4, Ta5d6ff'cancelled'Tb4b4b4]Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3messageContextMenuTb4b4b4.Te6edf3chatItemTff7b72?Tb4b4b4.Te6edf3lxmf_messageTff7b72?Tb4b4b4.Te6edf3stateTb4b4b4)
Ta5d6ff"
Te6edf3item-classTff7b72=Ta5d6ff"text-amber-600 dark:text-amber-400"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"
Te6edf3retrySendingMessageTb4b4b4(Te6edf3messageContextMenuTb4b4b4.Te6edf3chatItemTb4b4b4)Tb4b4b4;
Te6edf3messageContextMenuTb4b4b4.Te6edf3show Tff7b72= Tff7b72falseTb4b4b4;
Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"refresh" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Retry
Tb4b4b4<Tb4b4b4/Tff7b72ContextMenuItemTb4b4b4>
Tb4b4b4<Tff7b72ContextMenuItem
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isSelectedPeerBlocked Tff7b72&& Te6edf3selectedPeerTa5d6ff"
Te6edf3item-classTff7b72=Ta5d6ff"text-emerald-600 dark:text-emerald-400"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3liftBanishmentFromMessageMenuTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"check-circle" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"banishment.lift_banishment"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72ContextMenuItemTb4b4b4>
Tb4b4b4<Tff7b72ContextMenuDivider Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72ContextMenuItem
Te6edf3item-classTff7b72=Ta5d6ff"text-red-600 dark:text-red-400"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"
Te6edf3deleteChatItemTb4b4b4(Te6edf3messageContextMenuTb4b4b4.Te6edf3chatItemTb4b4b4)Tb4b4b4;
Te6edf3messageContextMenuTb4b4b4.Te6edf3show Tff7b72= Tff7b72falseTb4b4b4;
Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"trash-can-outline" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Delete
Tb4b4b4<Tb4b4b4/Tff7b72ContextMenuItemTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72ContextMenuPanelTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72TeleportTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- no peer selected -->
Tb4b4b4<Tff7b72div Te6edf3v-else Te6edf3classTff7b72=Ta5d6ff"flex flex-col h-full overflow-y-auto bg-gray-50/50 dark:bg-zinc-950/50"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"max-w-4xl mx-auto w-full px-4 py-8 sm:py-12 flex flex-col items-center"Tb4b4b4>
T8b949e<!-- welcome header -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-center mb-12"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"inline-flex items-center justify-center p-4 rounded-3xl bg-indigo-600 shadow-xl shadow-indigo-500/20 mb-6"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"message-text" Te6edf3classTff7b72=Ta5d6ff"size-10 text-white" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72h1 Te6edf3classTff7b72=Ta5d6ff"text-3xl font-black text-gray-900 dark:text-white tracking-tight mb-3"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"messages.no_active_chat"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72h1Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-gray-500 dark:text-zinc-400 max-w-sm mx-auto"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"messages.select_peer_or_enter_address"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- main actions grid -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-2 sm:grid-cols-4 gap-4 w-full mb-12"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"flex flex-col items-center gap-3 p-6 rounded-3xl bg-white dark:bg-zinc-900 border border-gray-100 dark:border-zinc-800 hover:border-indigo-500/50 hover:shadow-xl hover:shadow-indigo-500/5 transition-all group"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3focusComposeInputTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"size-12 rounded-2xl bg-indigo-50 dark:bg-indigo-900/20 text-indigo-600 flex items-center justify-center group-hover:scale-110 transition-transform"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"plus" Te6edf3classTff7b72=Ta5d6ff"size-6" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-sm font-bold text-gray-900 dark:text-zinc-100"Tb4b4b4>New MessageTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"flex flex-col items-center gap-3 p-6 rounded-3xl bg-white dark:bg-zinc-900 border border-gray-100 dark:border-zinc-800 hover:border-blue-500/50 hover:shadow-xl hover:shadow-blue-500/5 transition-all group"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3syncPropagationNodeTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"size-12 rounded-2xl bg-indigo-50 dark:bg-indigo-900/20 text-indigo-600 flex items-center justify-center group-hover:scale-110 transition-transform"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Te6edf3icon-nameTff7b72=Ta5d6ff"sync"
Te6edf3classTff7b72=Ta5d6ff"size-6"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4{ Ta5d6ff'animate-spin'Tff7b72: Te6edf3isSyncingPropagationNode Tb4b4b4}Ta5d6ff"
Tb4b4b4:Te6edf3styleTff7b72=Ta5d6ff"Te6edf3isSyncingPropagationNode Tff7b72? Tb4b4b4{ Te6edf3animationDirectionTff7b72: Ta5d6ff'reverse' Tb4b4b4} Tff7b72: Tb4b4b4{Tb4b4b4}Ta5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-sm font-bold text-gray-900 dark:text-zinc-100"Tb4b4b4>Tff7b72{{
Te6edf3isSyncingPropagationNode Tff7b72? Ta5d6ff"Syncing..." Tff7b72: Ta5d6ff"Sync Node"
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"flex flex-col items-center gap-3 p-6 rounded-3xl bg-white dark:bg-zinc-900 border border-gray-100 dark:border-zinc-800 hover:border-blue-500/50 hover:shadow-xl hover:shadow-blue-500/5 transition-all group"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3copyMyAddressTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"size-12 rounded-2xl bg-emerald-50 dark:bg-emerald-900/20 text-emerald-600 flex items-center justify-center group-hover:scale-110 transition-transform"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"content-copy" Te6edf3classTff7b72=Ta5d6ff"size-6" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-sm font-bold text-gray-900 dark:text-zinc-100"Tb4b4b4>My AddressTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"flex flex-col items-center gap-3 p-6 rounded-3xl bg-white dark:bg-zinc-900 border border-gray-100 dark:border-zinc-800 hover:border-blue-500/50 hover:shadow-xl hover:shadow-blue-500/5 transition-all group"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3$routerTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{ Te6edf3nameTff7b72: Ta5d6ff'identities' Tb4b4b4}Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"size-12 rounded-2xl bg-purple-50 dark:bg-purple-900/20 text-purple-600 flex items-center justify-center group-hover:scale-110 transition-transform"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"account-multiple" Te6edf3classTff7b72=Ta5d6ff"size-6" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-sm font-bold text-gray-900 dark:text-zinc-100"Tb4b4b4>IdentitiesTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- latest chats section -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3latestConversationsTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"w-full mb-12"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center justify-between mb-6"Tb4b4b4>
Tb4b4b4<Tff7b72h2
Te6edf3classTff7b72=Ta5d6ff"text-sm font-black text-gray-400 dark:text-zinc-500 uppercase tracking-widest flex items-center gap-2"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"history" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Latest Conversations
Tb4b4b4<Tb4b4b4/Tff7b72h2Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-1 sm:grid-cols-2 gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3chat Tff7b72in Te6edf3latestConversationsTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3chatTb4b4b4.Te6edf3destination_hashTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"group cursor-pointer p-4 bg-white dark:bg-zinc-900 border border-gray-100 dark:border-zinc-800 rounded-3xl hover:border-blue-500/50 hover:shadow-xl transition-all flex items-center gap-4"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3$emitTb4b4b4(Ta5d6ff'update:selectedPeer'Tb4b4b4, Te6edf3chatTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-shrink-0"Tb4b4b4>
Tb4b4b4<Tff7b72LxmfUserIcon
Tb4b4b4:Te6edf3custom-imageTff7b72=Ta5d6ff"Te6edf3chatTb4b4b4.Te6edf3contact_imageTa5d6ff"
Tb4b4b4:Te6edf3icon-nameTff7b72=Ta5d6ff"
Te6edf3chatTb4b4b4.Te6edf3lxmf_user_icon Tff7b72&& Te6edf3chatTb4b4b4.Te6edf3lxmf_user_iconTb4b4b4.Te6edf3icon_name
Tff7b72? Te6edf3chatTb4b4b4.Te6edf3lxmf_user_iconTb4b4b4.Te6edf3icon_name
Tff7b72: Ta5d6ff'account'
Ta5d6ff"
Tb4b4b4:Te6edf3icon-foreground-colourTff7b72=Ta5d6ff"
Te6edf3chatTb4b4b4.Te6edf3lxmf_user_icon Tff7b72? Te6edf3chatTb4b4b4.Te6edf3lxmf_user_iconTb4b4b4.Te6edf3foreground_colour Tff7b72: Ta5d6ff''
Ta5d6ff"
Tb4b4b4:Te6edf3icon-background-colourTff7b72=Ta5d6ff"
Te6edf3chatTb4b4b4.Te6edf3lxmf_user_icon Tff7b72? Te6edf3chatTb4b4b4.Te6edf3lxmf_user_iconTb4b4b4.Te6edf3background_colour Tff7b72: Ta5d6ff''
Ta5d6ff"
Te6edf3icon-classTff7b72=Ta5d6ff"size-12 sm:size-14"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1 min-w-0"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center justify-between gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"font-bold text-gray-900 dark:text-zinc-100 truncate"Tb4b4b4>
Tff7b72{{ Te6edf3chatTb4b4b4.Te6edf3custom_display_name Tff7b72?? Te6edf3chatTb4b4b4.Te6edf3display_name Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-[10px] text-gray-400 dark:text-zinc-500 whitespace-nowrap"Tb4b4b4>
Tff7b72{{ Te6edf3formatTimeAgoTb4b4b4(Te6edf3chatTb4b4b4.Te6edf3updated_atTb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-zinc-500 truncate mt-0.5"Tb4b4b4>
Tff7b72{{ Te6edf3chatTb4b4b4.Te6edf3latest_message_preview Tff7b72|| Te6edf3chatTb4b4b4.Te6edf3latest_message_title Tff7b72|| Ta5d6ff"No messages yet" Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Te6edf3icon-nameTff7b72=Ta5d6ff"chevron-right"
Te6edf3classTff7b72=Ta5d6ff"size-5 text-gray-300 dark:text-zinc-700 group-hover:text-blue-500 transition-colors"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- address input composer -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"w-full max-w-xl"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"relative group"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"absolute inset-y-0 left-0 pl-4 flex items-center pointer-events-none"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Te6edf3icon-nameTff7b72=Ta5d6ff"at"
Te6edf3classTff7b72=Ta5d6ff"size-5 text-gray-400 group-focus-within:text-blue-500 transition-colors"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3idTff7b72=Ta5d6ff"compose-input"
Te6edf3refTff7b72=Ta5d6ff"compose-input"
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3composeAddressTa5d6ff"
Tb4b4b4:Te6edf3readonlyTff7b72=Ta5d6ff"Te6edf3isTranslatingMessageTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3classTff7b72=Ta5d6ff"w-full bg-white dark:bg-zinc-900 border-2 border-gray-100 dark:border-zinc-800 text-gray-900 dark:text-zinc-100 text-base rounded-3xl focus:ring-4 focus:ring-blue-500/10 focus:border-blue-500 pl-12 pr-4 py-4 shadow-sm transition-all placeholder:text-gray-400 dark:placeholder:text-zinc-600 font-medium"
Te6edf3placeholderTff7b72=Ta5d6ff"Enter LXMF address to start a conversation..."
Tb4b4b4@Te6edf3keydownTb4b4b4.Te6edf3enterTb4b4b4.Te6edf3exactTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Te6edf3onComposeEnterPressedTa5d6ff"
Tb4b4b4@Te6edf3keydownTb4b4b4.Te6edf3upTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Te6edf3handleComposeInputUpTa5d6ff"
Tb4b4b4@Te6edf3keydownTb4b4b4.Te6edf3downTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Te6edf3handleComposeInputDownTa5d6ff"
Tb4b4b4@Te6edf3focusTff7b72=Ta5d6ff"Te6edf3isComposeInputFocused Tff7b72= Tff7b72trueTa5d6ff"
Tb4b4b4@Te6edf3blurTff7b72=Ta5d6ff"Te6edf3onComposeInputBlurTa5d6ff"
Tb4b4b4/Tb4b4b4>
T8b949e<!-- Suggestions Dropdown -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isComposeInputFocused Tff7b72&& Te6edf3composeSuggestionsTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"absolute z-50 left-0 right-0 bottom-full mb-4 bg-white dark:bg-zinc-900 border border-gray-100 dark:border-zinc-800 rounded-3xl shadow-2xl overflow-hidden animate-in fade-in slide-in-from-bottom-4 duration-300"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-2 space-y-1"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-forTff7b72=Ta5d6ff"Tb4b4b4(Te6edf3suggestionTb4b4b4, Te6edf3indexTb4b4b4) Tff7b72in Te6edf3composeSuggestionsTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3suggestionTb4b4b4.Te6edf3hashTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"px-4 py-3 flex items-center gap-3 cursor-pointer rounded-2xl transition-all"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4[
Te6edf3index Tff7b72=== Te6edf3selectedComposeSuggestionIndex
Tff7b72? Ta5d6ff'bg-blue-600 text-white shadow-lg'
Tff7b72: Ta5d6ff'hover:bg-gray-50 dark:hover:bg-zinc-800/50 text-gray-700 dark:text-zinc-300'Tb4b4b4,
Tb4b4b4]Ta5d6ff"
Tb4b4b4@Te6edf3mousedownTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Te6edf3selectComposeSuggestionTb4b4b4(Te6edf3suggestionTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"shrink-0 size-10 rounded-xl flex items-center justify-center"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4[
Te6edf3index Tff7b72=== Te6edf3selectedComposeSuggestionIndex
Tff7b72? Ta5d6ff'bg-white/20'
Tff7b72: Te6edf3suggestionTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff'contact'
Tff7b72? Ta5d6ff'bg-blue-100 dark:bg-blue-900/40 text-blue-600'
Tff7b72: Ta5d6ff'bg-gray-100 dark:bg-zinc-800 text-gray-500'Tb4b4b4,
Tb4b4b4]Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Tb4b4b4:Te6edf3icon-nameTff7b72=Ta5d6ff"Te6edf3suggestionTb4b4b4.Te6edf3iconTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex-1 min-w-0"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-sm font-bold truncate"Tb4b4b4>
Tff7b72{{ Te6edf3suggestionTb4b4b4.Te6edf3name Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-mono opacity-60 truncate"Tb4b4b4>
Tff7b72{{ Te6edf3formatDestinationHashTb4b4b4(Te6edf3suggestionTb4b4b4.Te6edf3hashTb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3suggestionTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff'contact'Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"text-[10px] uppercase font-black tracking-widest opacity-40 px-2 py-1 rounded-md bg-black/5"
Tb4b4b4>
Contact
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- image modal -->
Tb4b4b4<Tff7b72Transition
Te6edf3enter-active-classTff7b72=Ta5d6ff"transition ease-out duration-200"
Te6edf3enter-from-classTff7b72=Ta5d6ff"opacity-0"
Te6edf3enter-to-classTff7b72=Ta5d6ff"opacity-100"
Te6edf3leave-active-classTff7b72=Ta5d6ff"transition ease-in duration-150"
Te6edf3leave-from-classTff7b72=Ta5d6ff"opacity-100"
Te6edf3leave-to-classTff7b72=Ta5d6ff"opacity-0"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3imageModalUrlTa5d6ff"
Te6edf3refTff7b72=Ta5d6ff"imageModalOverlay"
Te6edf3tabindexTff7b72=Ta5d6ff"0"
Te6edf3classTff7b72=Ta5d6ff"fixed inset-0 z-50 flex items-center justify-center bg-black/80 dark:bg-black/90 backdrop-blur-sm p-4 outline-none"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3closeImageModalTa5d6ff"
Tb4b4b4@Te6edf3keydownTb4b4b4.Te6edf3leftTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Te6edf3imageModalNavigateTb4b4b4(Tff7b72-T79c0ff1Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3keydownTb4b4b4.Te6edf3rightTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Te6edf3imageModalNavigateTb4b4b4(T79c0ff1Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3keydownTb4b4b4.Te6edf3escapeTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Te6edf3closeImageModalTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"relative max-w-7xl max-h-full" @Te6edf3click.Te6edf3stopTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"absolute -top-12 right-0 inline-flex items-center justify-center w-10 h-10 rounded-xl bg-white/10 dark:bg-zinc-900/10 hover:bg-white/20 dark:hover:bg-zinc-900/20 text-white transition-colors"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3closeImageModalTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"close" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3imageModalGallery Tff7b72&& Te6edf3imageModalGalleryTb4b4b4.Te6edf3length Tff7b72> T79c0ff1Ta5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"absolute left-0 top-1/2 z-10 -translate-y-1/2 inline-flex items-center justify-center w-11 h-11 rounded-full bg-black/40 hover:bg-black/55 text-white transition-colors"
Te6edf3aria-labelTff7b72=Ta5d6ff"Previous image"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Te6edf3imageModalNavigateTb4b4b4(Tff7b72-T79c0ff1Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"chevron-left" Te6edf3classTff7b72=Ta5d6ff"size-7" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3imageModalGallery Tff7b72&& Te6edf3imageModalGalleryTb4b4b4.Te6edf3length Tff7b72> T79c0ff1Ta5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"absolute right-0 top-1/2 z-10 -translate-y-1/2 inline-flex items-center justify-center w-11 h-11 rounded-full bg-black/40 hover:bg-black/55 text-white transition-colors"
Te6edf3aria-labelTff7b72=Ta5d6ff"Next image"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Te6edf3imageModalNavigateTb4b4b4(T79c0ff1Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"chevron-right" Te6edf3classTff7b72=Ta5d6ff"size-7" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3imageModalGallery Tff7b72&& Te6edf3imageModalGalleryTb4b4b4.Te6edf3length Tff7b72> T79c0ff1Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"pointer-events-none absolute bottom-2 left-1/2 z-10 -translate-x-1/2 rounded-full bg-black/50 px-3 py-1 text-xs font-medium text-white"
Tb4b4b4>
Tff7b72{{ Te6edf3imageModalIndex Tff7b72+ T79c0ff1 Tff7b72}} / Tff7b72{{ Te6edf3imageModalGalleryTb4b4b4.Te6edf3length Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72img Tb4b4b4:Te6edf3srcTff7b72=Ta5d6ff"Te6edf3imageModalUrlTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"max-w-full max-h-[90vh] rounded-xl shadow-2xl" Te6edf3altTff7b72=Ta5d6ff"Image preview" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72TransitionTb4b4b4>
Tb4b4b4<Tff7b72PaperMessageModal
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isPaperMessageModalOpenTa5d6ff"
Tb4b4b4:Te6edf3message-hashTff7b72=Ta5d6ff"Te6edf3paperMessageHashTa5d6ff"
Tb4b4b4:Te6edf3recipient-hashTff7b72=Ta5d6ff"Te6edf3selectedPeerTff7b72?Tb4b4b4.Te6edf3destination_hashTa5d6ff"
Tb4b4b4@Te6edf3closeTff7b72=Ta5d6ff"Te6edf3isPaperMessageModalOpen Tff7b72= Tff7b72falseTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72PaperMessageModal
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isPaperMessageResultModalOpenTa5d6ff"
Tb4b4b4:Te6edf3initial-uriTff7b72=Ta5d6ff"Te6edf3generatedPaperMessageUriTa5d6ff"
Tb4b4b4:Te6edf3recipient-hashTff7b72=Ta5d6ff"Te6edf3selectedPeerTff7b72?Tb4b4b4.Te6edf3destination_hashTa5d6ff"
Tb4b4b4@Te6edf3closeTff7b72=Ta5d6ff"
Te6edf3isPaperMessageResultModalOpen Tff7b72= Tff7b72falseTb4b4b4;
Te6edf3generatedPaperMessageUri Tff7b72= Tff7b72nullTb4b4b4;
Ta5d6ff"
Tb4b4b4/Tb4b4b4>
T8b949e<!-- Raw Message Modal -->
Tb4b4b4<Tff7b72Transition
Te6edf3enter-active-classTff7b72=Ta5d6ff"transition ease-out duration-200"
Te6edf3enter-from-classTff7b72=Ta5d6ff"opacity-0 scale-95"
Te6edf3enter-to-classTff7b72=Ta5d6ff"opacity-100 scale-100"
Te6edf3leave-active-classTff7b72=Ta5d6ff"transition ease-in duration-150"
Te6edf3leave-from-classTff7b72=Ta5d6ff"opacity-100 scale-100"
Te6edf3leave-to-classTff7b72=Ta5d6ff"opacity-0 scale-95"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isRawMessageModalOpenTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"fixed inset-0 z-[150] flex items-center justify-center p-4 bg-black/60 backdrop-blur-sm"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3selfTff7b72=Ta5d6ff"Te6edf3isRawMessageModalOpen Tff7b72= Tff7b72falseTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"w-full max-w-2xl bg-white dark:bg-zinc-900 rounded-2xl shadow-2xl overflow-hidden flex flex-col max-h-[90vh]"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"px-6 py-4 border-b border-gray-100 dark:border-zinc-800 flex items-center justify-between shrink-0"
Tb4b4b4>
Tb4b4b4<Tff7b72h3 Te6edf3classTff7b72=Ta5d6ff"text-lg font-bold text-gray-900 dark:text-white"Tb4b4b4>Raw LXMF MessageTb4b4b4<Tb4b4b4/Tff7b72h3Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"text-gray-400 hover:text-gray-500 dark:hover:text-zinc-300 transition-colors"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3isRawMessageModalOpen Tff7b72= Tff7b72falseTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"close" Te6edf3classTff7b72=Ta5d6ff"size-6" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-0 overflow-y-auto bg-gray-50 dark:bg-zinc-950 flex-grow"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"p-6 space-y-6"Tb4b4b4>
T8b949e<!-- header / status info -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-1 lg:grid-cols-2 gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-1"Tb4b4b4>
Tb4b4b4<Tff7b72label
Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-bold uppercase tracking-wider text-gray-400 dark:text-zinc-500"
Tb4b4b4>Message IDTb4b4b4<Tb4b4b4/Tff7b72label
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-sm font-mono text-gray-900 dark:text-zinc-200"Tb4b4b4>
Tff7b72{{ Te6edf3rawMessageDataTb4b4b4.Te6edf3id Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-1"Tb4b4b4>
Tb4b4b4<Tff7b72label
Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-bold uppercase tracking-wider text-gray-400 dark:text-zinc-500"
Tb4b4b4>StateTb4b4b4<Tb4b4b4/Tff7b72label
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3classTff7b72=Ta5d6ff"inline-flex items-center rounded-md px-2 py-1 text-xs font-medium ring-1 ring-inset"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"
Te6edf3rawMessageDataTb4b4b4.Te6edf3state Tff7b72=== Ta5d6ff'delivered'
Tff7b72? Ta5d6ff'bg-green-50 text-green-700 ring-green-600/20 dark:bg-green-900/30 dark:text-green-400'
Tff7b72: Ta5d6ff'bg-blue-50 text-blue-700 ring-blue-700/10 dark:bg-blue-900/30 dark:text-blue-400'
Ta5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3rawMessageDataTb4b4b4.Te6edf3state Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3rawMessageDataTb4b4b4.Te6edf3is_incomingTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"text-[10px] text-gray-400"
Tb4b4b4>IncomingTb4b4b4<Tb4b4b4/Tff7b72span
Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-else Te6edf3classTff7b72=Ta5d6ff"text-[10px] text-gray-400"Tb4b4b4>OutboundTb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-1"Tb4b4b4>
Tb4b4b4<Tff7b72label
Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-bold uppercase tracking-wider text-gray-400 dark:text-zinc-500"
Tb4b4b4>Message HashTb4b4b4<Tb4b4b4/Tff7b72label
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"text-sm font-mono break-all text-gray-900 dark:text-zinc-200 bg-white dark:bg-zinc-900 p-2 rounded border border-gray-100 dark:border-zinc-800"
Tb4b4b4>
Tff7b72{{ Te6edf3rawMessageDataTb4b4b4.Te6edf3hash Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-1 lg:grid-cols-2 gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-1"Tb4b4b4>
Tb4b4b4<Tff7b72label
Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-bold uppercase tracking-wider text-gray-400 dark:text-zinc-500"
Tb4b4b4>Source HashTb4b4b4<Tb4b4b4/Tff7b72label
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs font-mono break-all text-gray-900 dark:text-zinc-200"Tb4b4b4>
Tff7b72{{ Te6edf3rawMessageDataTb4b4b4.Te6edf3source_hash Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-1"Tb4b4b4>
Tb4b4b4<Tff7b72label
Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-bold uppercase tracking-wider text-gray-400 dark:text-zinc-500"
Tb4b4b4>Destination HashTb4b4b4<Tb4b4b4/Tff7b72label
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs font-mono break-all text-gray-900 dark:text-zinc-200"Tb4b4b4>
Tff7b72{{ Te6edf3rawMessageDataTb4b4b4.Te6edf3destination_hash Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"grid grid-cols-2 lg:grid-cols-4 gap-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-1"Tb4b4b4>
Tb4b4b4<Tff7b72label
Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-bold uppercase tracking-wider text-gray-400 dark:text-zinc-500"
Tb4b4b4>MethodTb4b4b4<Tb4b4b4/Tff7b72label
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-900 dark:text-zinc-200 capitalize"Tb4b4b4>
Tff7b72{{ Te6edf3rawMessageDataTb4b4b4.Te6edf3method Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-1"Tb4b4b4>
Tb4b4b4<Tff7b72label
Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-bold uppercase tracking-wider text-gray-400 dark:text-zinc-500"
Tb4b4b4>RSSITb4b4b4<Tb4b4b4/Tff7b72label
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-900 dark:text-zinc-200"Tb4b4b4>
Tff7b72{{ Te6edf3rawMessageDataTb4b4b4.Te6edf3rssi Tff7b72|| Ta5d6ff"N/A" Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-1"Tb4b4b4>
Tb4b4b4<Tff7b72label
Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-bold uppercase tracking-wider text-gray-400 dark:text-zinc-500"
Tb4b4b4>SNRTb4b4b4<Tb4b4b4/Tff7b72label
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-900 dark:text-zinc-200"Tb4b4b4>
Tff7b72{{ Te6edf3rawMessageDataTb4b4b4.Te6edf3snr Tff7b72|| Ta5d6ff"N/A" Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-1"Tb4b4b4>
Tb4b4b4<Tff7b72label
Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-bold uppercase tracking-wider text-gray-400 dark:text-zinc-500"
Tb4b4b4>AttemptsTb4b4b4<Tb4b4b4/Tff7b72label
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-900 dark:text-zinc-200"Tb4b4b4>
Tff7b72{{ Te6edf3rawMessageDataTb4b4b4.Te6edf3delivery_attempts Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-1"Tb4b4b4>
Tb4b4b4<Tff7b72label
Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-bold uppercase tracking-wider text-gray-400 dark:text-zinc-500"
Tb4b4b4>Content / App DataTb4b4b4<Tb4b4b4/Tff7b72label
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"text-xs font-mono bg-white dark:bg-zinc-900 p-3 rounded border border-gray-100 dark:border-zinc-800 whitespace-pre-wrap break-all text-gray-800 dark:text-zinc-300"
Tb4b4b4>
Tff7b72{{ Te6edf3rawMessageDataTb4b4b4.Te6edf3content Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3rawMessageDataTb4b4b4.Te6edf3raw_uriTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"space-y-1"Tb4b4b4>
Tb4b4b4<Tff7b72label
Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-bold uppercase tracking-wider text-gray-400 dark:text-zinc-500"
Tb4b4b4>Raw LXMF URITb4b4b4<Tb4b4b4/Tff7b72label
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-mono bg-white dark:bg-zinc-900 p-2 rounded border border-gray-100 dark:border-zinc-800 break-all text-gray-600 dark:text-zinc-400"
Tb4b4b4>
Tff7b72{{ Te6edf3rawMessageDataTb4b4b4.Te6edf3raw_uri Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
T8b949e<!-- JSON fallback for full detail -->
Tb4b4b4<Tff7b72details Te6edf3classTff7b72=Ta5d6ff"group"Tb4b4b4>
Tb4b4b4<Tff7b72summary
Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2 cursor-pointer text-[10px] font-bold uppercase tracking-wider text-gray-400 dark:text-zinc-500 hover:text-gray-600 dark:hover:text-zinc-300 transition-colors"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Te6edf3icon-nameTff7b72=Ta5d6ff"chevron-right"
Te6edf3classTff7b72=Ta5d6ff"size-4 group-open:rotate-90 transition-transform"
Tb4b4b4/Tb4b4b4>
View Full JSON Object
Tb4b4b4<Tb4b4b4/Tff7b72summaryTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"mt-2 p-4 bg-black/5 dark:bg-black/20 rounded-lg overflow-x-auto"Tb4b4b4>
Tb4b4b4<Tff7b72pre Te6edf3classTff7b72=Ta5d6ff"text-[10px] font-mono text-gray-600 dark:text-zinc-400"Tb4b4b4>Tff7b72{{
Tffa657JSONTb4b4b4.Te6edf3stringifyTb4b4b4(Te6edf3rawMessageDataTb4b4b4, Tff7b72nullTb4b4b4, T79c0ff2Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72preTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72detailsTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"px-6 py-4 border-t border-gray-100 dark:border-zinc-800 flex justify-end shrink-0"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"px-4 py-2 bg-blue-600 hover:bg-blue-700 text-white rounded-lg text-sm font-bold transition-colors"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3isRawMessageModalOpen Tff7b72= Tff7b72falseTa5d6ff"
Tb4b4b4>
Close
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72TransitionTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72scriptTb4b4b4>
Tff7b72import Te6edf3Utils Tff7b72from Ta5d6ff"../../js/Utils"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3clampFloatingToViewport Tb4b4b4} Tff7b72from Ta5d6ff"../../js/clampFloatingToViewport.js"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3isNearBottomTb4b4b4, Te6edf3scrollContainerToBottomTb4b4b4, Te6edf3shouldLoadPreviousMessages Tb4b4b4} Tff7b72from Ta5d6ff"./conversationScroll.js"Tb4b4b4;
Tff7b72import Tb4b4b4{
Te6edf3isTelemetryOnly Tff7b72as Te6edf3isTelemetryOnlyMessageTb4b4b4,
Te6edf3hasRenderableContent Tff7b72as Te6edf3messageHasRenderableContentTb4b4b4,
Te6edf3isImageOnlyMessage Tff7b72as Te6edf3computeIsImageOnlyMessageTb4b4b4,
Te6edf3collectImageFilesFromDataTransfer Tff7b72as Te6edf3collectImagesFromDataTransferTb4b4b4,
Te6edf3extractClipboardImageFilesTb4b4b4,
Tb4b4b4} Tff7b72from Ta5d6ff"./conversationMessageHelpers.js"Tb4b4b4;
Tff7b72import Te6edf3ConversationPeerHeader Tff7b72from Ta5d6ff"./ConversationPeerHeader.vue"Tb4b4b4;
Tff7b72import Te6edf3ConversationMessageEntry Tff7b72from Ta5d6ff"./ConversationMessageEntry.vue"Tb4b4b4;
Tff7b72import Te6edf3ConversationMessageListVirtual Tff7b72from Ta5d6ff"./ConversationMessageListVirtual.vue"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3displayGroupsOldestFirstTb4b4b4, Te6edf3MIN_VIRTUAL_DISPLAY_GROUPS Tb4b4b4} Tff7b72from Ta5d6ff"./messageListVirtual.js"Tb4b4b4;
Tff7b72import Te6edf3DialogUtils Tff7b72from Ta5d6ff"../../js/DialogUtils"Tb4b4b4;
Tff7b72import Te6edf3MicrophoneRecorder Tff7b72from Ta5d6ff"../../js/MicrophoneRecorder"Tb4b4b4;
Tff7b72import Te6edf3WebSocketConnection Tff7b72from Ta5d6ff"../../js/WebSocketConnection"Tb4b4b4;
Tff7b72import Te6edf3AddAudioButton Tff7b72from Ta5d6ff"./AddAudioButton.vue"Tb4b4b4;
Tff7b72import Te6edf3dayjs Tff7b72from Ta5d6ff"dayjs"Tb4b4b4;
Tff7b72import Te6edf3relativeTime Tff7b72from Ta5d6ff"dayjs/plugin/relativeTime"Tb4b4b4;
Te6edf3dayjsTb4b4b4.Te6edf3extendTb4b4b4(Te6edf3relativeTimeTb4b4b4)Tb4b4b4;
Tff7b72import Te6edf3SendMessageButton Tff7b72from Ta5d6ff"./SendMessageButton.vue"Tb4b4b4;
Tff7b72import Te6edf3MaterialDesignIcon Tff7b72from Ta5d6ff"../MaterialDesignIcon.vue"Tb4b4b4;
Tff7b72import Te6edf3ContextMenuDivider Tff7b72from Ta5d6ff"../contextmenu/ContextMenuDivider.vue"Tb4b4b4;
Tff7b72import Te6edf3ContextMenuItem Tff7b72from Ta5d6ff"../contextmenu/ContextMenuItem.vue"Tb4b4b4;
Tff7b72import Te6edf3ContextMenuPanel Tff7b72from Ta5d6ff"../contextmenu/ContextMenuPanel.vue"Tb4b4b4;
Tff7b72import Te6edf3AddImageButton Tff7b72from Ta5d6ff"./AddImageButton.vue"Tb4b4b4;
Tff7b72import Te6edf3AudioWaveformPlayer Tff7b72from Ta5d6ff"./AudioWaveformPlayer.vue"Tb4b4b4;
Tff7b72import Te6edf3LxmfUserIcon Tff7b72from Ta5d6ff"../LxmfUserIcon.vue"Tb4b4b4;
Tff7b72import Te6edf3GlobalEmitter Tff7b72from Ta5d6ff"../../js/GlobalEmitter"Tb4b4b4;
Tff7b72import Te6edf3ToastUtils Tff7b72from Ta5d6ff"../../js/ToastUtils"Tb4b4b4;
Tff7b72import Te6edf3PaperMessageModal Tff7b72from Ta5d6ff"./PaperMessageModal.vue"Tb4b4b4;
Tff7b72import Te6edf3GlobalState Tff7b72from Ta5d6ff"../../js/GlobalState"Tb4b4b4;
Tff7b72import Te6edf3MarkdownRenderer Tff7b72from Ta5d6ff"../../js/MarkdownRenderer"Tb4b4b4;
Tff7b72import Te6edf3LinkUtils Tff7b72from Ta5d6ff"../../js/LinkUtils"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3findMapUriInContentTb4b4b4, Te6edf3mapLinkKindFromMessageTb4b4b4, Te6edf3parseMeshchatMapUri Tb4b4b4} Tff7b72from Ta5d6ff"../../js/mapLinkUtils.js"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3COLUMBA_REACTION_EMOJISTb4b4b4, Te6edf3mergeLxmfReactionRowsIntoMessages Tb4b4b4} Tff7b72from Ta5d6ff"../../js/lxmfReactions"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3createOutboundQueue Tb4b4b4} Tff7b72from Ta5d6ff"../../js/outboundSendQueue"Tb4b4b4;
Tff7b72import Te6edf3emojiPickerEnDataUrl Tff7b72from Ta5d6ff"emoji-picker-element-data/en/emojibase/data.json?url"Tb4b4b4;
Tff7b72import Ta5d6ff"emoji-picker-element"Tb4b4b4;
Tff7b72import Te6edf3StickerView Tff7b72from Ta5d6ff"../stickers/StickerView.vue"Tb4b4b4;
Tff7b72import Te6edf3InViewAnimatedImg Tff7b72from Ta5d6ff"./InViewAnimatedImg.vue"Tb4b4b4;
Tff7b72import Te6edf3TelemetryHistoryModal Tff7b72from Ta5d6ff"./telemetry/TelemetryHistoryModal.vue"Tb4b4b4;
Tff7b72export Tff7b72default Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff"ConversationViewer"Tb4b4b4,
Te6edf3componentsTff7b72: Tb4b4b4{
Te6edf3AddImageButtonTb4b4b4,
Te6edf3ContextMenuDividerTb4b4b4,
Te6edf3ContextMenuItemTb4b4b4,
Te6edf3ContextMenuPanelTb4b4b4,
Te6edf3ConversationPeerHeaderTb4b4b4,
Te6edf3MaterialDesignIconTb4b4b4,
Te6edf3SendMessageButtonTb4b4b4,
Te6edf3AddAudioButtonTb4b4b4,
Te6edf3AudioWaveformPlayerTb4b4b4,
Te6edf3PaperMessageModalTb4b4b4,
Te6edf3LxmfUserIconTb4b4b4,
Te6edf3ConversationMessageEntryTb4b4b4,
Te6edf3ConversationMessageListVirtualTb4b4b4,
Te6edf3StickerViewTb4b4b4,
Te6edf3InViewAnimatedImgTb4b4b4,
Te6edf3TelemetryHistoryModalTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3propsTff7b72: Tb4b4b4{
Te6edf3configTff7b72: Tb4b4b4{
Te6edf3typeTff7b72: Tffa657ObjectTb4b4b4,
Te6edf3requiredTff7b72: Tff7b72falseTb4b4b4,
Tff7b72defaultTff7b72: Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3myLxmfAddressHashTff7b72: Tb4b4b4{
Te6edf3typeTff7b72: Tffa657StringTb4b4b4,
Te6edf3requiredTff7b72: Tff7b72falseTb4b4b4,
Tff7b72defaultTff7b72: Ta5d6ff""Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3selectedPeerTff7b72: Tb4b4b4{
Te6edf3typeTff7b72: Tffa657ObjectTb4b4b4,
Te6edf3requiredTff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3conversationsTff7b72: Tb4b4b4{
Te6edf3typeTff7b72: Tffa657ArrayTb4b4b4,
Te6edf3requiredTff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3emitsTff7b72: Tb4b4b4[Ta5d6ff"close"Tb4b4b4, Ta5d6ff"reload-conversations"Tb4b4b4, Ta5d6ff"update:selectedPeer"Tb4b4b4, Ta5d6ff"update-peer-tracking"Tb4b4b4]Tb4b4b4,
Te6edf3dataTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{
Te6edf3GlobalStateTb4b4b4,
Te6edf3selectedPeerPathTff7b72: Tff7b72nullTb4b4b4,
Te6edf3selectedPeerLxmfStampInfoTff7b72: Tff7b72nullTb4b4b4,
Te6edf3selectedPeerSignalMetricsTff7b72: Tff7b72nullTb4b4b4,
Te6edf3lxmfMessagesRequestSequenceTff7b72: T79c0ff0Tb4b4b4,
Te6edf3chatItemsTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3isLoadingPreviousTff7b72: Tff7b72falseTb4b4b4,
Te6edf3loadPreviousInFlightTff7b72: T79c0ff0Tb4b4b4,
Te6edf3hasMorePreviousTff7b72: Tff7b72trueTb4b4b4,
Te6edf3newMessageDeliveryMethodTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newMessageTextTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3newMessageImagesTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3newMessageImageUrlsTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3newMessageAudioTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newMessageTelemetryTff7b72: Tff7b72nullTb4b4b4,
Te6edf3newMessageFilesTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3isTranslatingMessageTff7b72: Tff7b72falseTb4b4b4,
Te6edf3autoScrollOnNewMessageTff7b72: Tff7b72trueTb4b4b4,
Te6edf3composeAddressTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3isComposeInputFocusedTff7b72: Tff7b72falseTb4b4b4,
Te6edf3selectedComposeSuggestionIndexTff7b72: Tff7b72-T79c0ff1Tb4b4b4,
Te6edf3isShareContactModalOpenTff7b72: Tff7b72falseTb4b4b4,
Te6edf3contactsTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3contactsSearchTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3isRecordingAudioAttachmentTff7b72: Tff7b72falseTb4b4b4,
Te6edf3audioAttachmentMicrophoneRecorderTff7b72: Tff7b72nullTb4b4b4,
Te6edf3audioAttachmentMicrophoneRecorderCodecTff7b72: Tff7b72nullTb4b4b4,
Te6edf3audioAttachmentRecordingStartedAtTff7b72: Tff7b72nullTb4b4b4,
Te6edf3audioAttachmentRecordingDurationTff7b72: Tff7b72nullTb4b4b4,
Te6edf3audioAttachmentRecordingTimerTff7b72: Tff7b72nullTb4b4b4,
Te6edf3lxmfMessageAudioAttachmentCacheTff7b72: Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3isDownloadingAudioTff7b72: Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3expandedMessageInfoTff7b72: Tff7b72nullTb4b4b4,
Te6edf3imageModalUrlTff7b72: Tff7b72nullTb4b4b4,
Te6edf3imageModalGalleryTff7b72: Tff7b72nullTb4b4b4,
Te6edf3imageModalIndexTff7b72: T79c0ff0Tb4b4b4,
Te6edf3isSelectedPeerBlockedTff7b72: Tff7b72falseTb4b4b4,
Te6edf3isStrangerPeerTff7b72: Tff7b72falseTb4b4b4,
Te6edf3strangerBannerDismissedTff7b72: Tff7b72falseTb4b4b4,
Te6edf3isGeneratingPaperMessageTff7b72: Tff7b72falseTb4b4b4,
Te6edf3generatedPaperMessageUriTff7b72: Tff7b72nullTb4b4b4,
Te6edf3isPaperMessageResultModalOpenTff7b72: Tff7b72falseTb4b4b4,
Te6edf3lxmfAudioModeToCodec2ModeMapTff7b72: Tb4b4b4{
T8b949e// https://github.com/markqvist/LXMF/blob/master/LXMF/LXMF.py#L21
T79c0ff0x01Tff7b72: Ta5d6ff"450PWB"Tb4b4b4, T8b949e// AM_CODEC2_450PWB
T79c0ff0x02Tff7b72: Ta5d6ff"450"Tb4b4b4, T8b949e// AM_CODEC2_450
T79c0ff0x03Tff7b72: Ta5d6ff"700C"Tb4b4b4, T8b949e// AM_CODEC2_700C
T79c0ff0x04Tff7b72: Ta5d6ff"1200"Tb4b4b4, T8b949e// AM_CODEC2_1200
T79c0ff0x05Tff7b72: Ta5d6ff"1300"Tb4b4b4, T8b949e// AM_CODEC2_1300
T79c0ff0x06Tff7b72: Ta5d6ff"1400"Tb4b4b4, T8b949e// AM_CODEC2_1400
T79c0ff0x07Tff7b72: Ta5d6ff"1600"Tb4b4b4, T8b949e// AM_CODEC2_1600
T79c0ff0x08Tff7b72: Ta5d6ff"2400"Tb4b4b4, T8b949e// AM_CODEC2_2400
T79c0ff0x09Tff7b72: Ta5d6ff"3200"Tb4b4b4, T8b949e// AM_CODEC2_3200
Tb4b4b4}Tb4b4b4,
Te6edf3isPaperMessageModalOpenTff7b72: Tff7b72falseTb4b4b4,
Te6edf3paperMessageHashTff7b72: Tff7b72nullTb4b4b4,
Te6edf3isRawMessageModalOpenTff7b72: Tff7b72falseTb4b4b4,
Te6edf3rawMessageDataTff7b72: Tff7b72nullTb4b4b4,
Te6edf3hasTranslatorTff7b72: Tff7b72falseTb4b4b4,
Te6edf3translatorLanguagesTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3propagationNodeStatusTff7b72: Tff7b72nullTb4b4b4,
Te6edf3propagationStatusIntervalTff7b72: Tff7b72nullTb4b4b4,
Te6edf3showTelemetryInChatTff7b72: Tff7b72falseTb4b4b4,
Te6edf3isTelemetryHistoryModalOpenTff7b72: Tff7b72falseTb4b4b4,
Te6edf3replyingToTff7b72: Tff7b72nullTb4b4b4,
Te6edf3messageContextMenuTff7b72: Tb4b4b4{
Te6edf3showTff7b72: Tff7b72falseTb4b4b4,
Te6edf3xTff7b72: T79c0ff0Tb4b4b4,
Te6edf3yTff7b72: T79c0ff0Tb4b4b4,
Te6edf3chatItemTff7b72: Tff7b72nullTb4b4b4,
Te6edf3justOpenedTff7b72: Tff7b72falseTb4b4b4,
Te6edf3openedFromBubbleTff7b72: Tff7b72falseTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3columbaReactionEmojisTff7b72: Te6edf3COLUMBA_REACTION_EMOJISTb4b4b4,
Te6edf3reactionPickerChatItemTff7b72: Tff7b72nullTb4b4b4,
Te6edf3reactionPickerPosTff7b72: Tff7b72nullTb4b4b4,
Te6edf3reactionDragStateTff7b72: Tff7b72nullTb4b4b4,
Te6edf3userStickersTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3userStickerPacksTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3activeStickerPackIdTff7b72: Tff7b72nullTb4b4b4,
Te6edf3isStickerPickerOpenTff7b72: Tff7b72falseTb4b4b4,
Te6edf3emojiStickerTabTff7b72: Ta5d6ff"emoji"Tb4b4b4,
Te6edf3emojiPickerDataUrlTff7b72: Te6edf3emojiPickerEnDataUrlTb4b4b4,
Te6edf3stickerDropActiveTff7b72: Tff7b72falseTb4b4b4,
Te6edf3composerImageDropActiveTff7b72: Tff7b72falseTb4b4b4,
Te6edf3isStickerUploadingTff7b72: Tff7b72falseTb4b4b4,
Te6edf3userGifsTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3gifDropActiveTff7b72: Tff7b72falseTb4b4b4,
Te6edf3isGifUploadingTff7b72: Tff7b72falseTb4b4b4,
Te6edf3nowTff7b72: Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3updateTimerTff7b72: Tff7b72nullTb4b4b4,
Te6edf3sendStatusUiMsTff7b72: Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3sendStatusTickIntervalTff7b72: Tff7b72nullTb4b4b4,
Te6edf3windowWidthTff7b72: Tff7b72typeof Tffa657window Tff7b72!== Ta5d6ff"undefined" Tff7b72? Tffa657windowTb4b4b4.Te6edf3innerWidth Tff7b72: T79c0ff1024Tb4b4b4,
Te6edf3peerHeaderCompactTff7b72: Tff7b72falseTb4b4b4,
Te6edf3peerHeaderResizeObserverTff7b72: Tff7b72nullTb4b4b4,
Te6edf3scrollBottomGenTff7b72: T79c0ff0Tb4b4b4,
Te6edf3prevScrollWantedLoadPreviousTff7b72: Tff7b72falseTb4b4b4,
Te6edf3initialLoadActiveTff7b72: Tff7b72falseTb4b4b4,
Te6edf3messagesViewportReadyTff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3computedTff7b72: Tb4b4b4{
Te6edf3visibleStickersTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3activeStickerPackId Tff7b72=== Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3userStickersTb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3userStickersTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3sTb4b4b4) Tb4b4b4=> Te6edf3sTb4b4b4.Te6edf3pack_id Tff7b72=== Tff7b72thisTb4b4b4.Te6edf3activeStickerPackIdTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3compactPeerActionsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3windowWidth Tff7b72< T79c0ff640 Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3peerHeaderCompactTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3compactSendLayoutTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3windowWidth Tff7b72< T79c0ff640 Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3peerHeaderCompactTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3emojiPickerThemeClassTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72void Te6edf3GlobalStateTb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3themeTb4b4b4;
Tff7b72return Te6edf3GlobalStateTb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3theme Tff7b72=== Ta5d6ff"dark" Tff7b72? Ta5d6ff"dark" Tff7b72: Ta5d6ff"light"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3reactionPickerStyleTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3reactionPickerPosTb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{
Te6edf3leftTff7b72: Tff7b72thisTb4b4b4.Te6edf3reactionPickerPosTb4b4b4.Te6edf3x Tff7b72+ Ta5d6ff"px"Tb4b4b4,
Te6edf3topTff7b72: Tff7b72thisTb4b4b4.Te6edf3reactionPickerPosTb4b4b4.Te6edf3y Tff7b72+ Ta5d6ff"px"Tb4b4b4,
Te6edf3positionTff7b72: Ta5d6ff"fixed"Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tff7b72return Tb4b4b4{
Te6edf3bottomTff7b72: Ta5d6ff"0.5rem"Tb4b4b4,
Te6edf3leftTff7b72: Ta5d6ff"50%"Tb4b4b4,
Te6edf3transformTff7b72: Ta5d6ff"translateX(-50%)"Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3usesThemeOutboundBubbleColorTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3c Tff7b72= Te6edf3GlobalStateTff7b72?Tb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3message_outbound_bubble_colorTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3c Tff7b72== Tff7b72null Tff7b72|| Tffa657StringTb4b4b4(Te6edf3cTb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72=== Ta5d6ff""Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4}
Tff7b72return Tffa657StringTb4b4b4(Te6edf3cTb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4) Tff7b72=== Ta5d6ff"#4f46e5"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3bubbleStylesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72void Te6edf3GlobalStateTb4b4b4.Te6edf3detailedOutboundSendStatusTb4b4b4;
Tff7b72void Tff7b72thisTb4b4b4.Te6edf3sendStatusUiMsTb4b4b4;
Tff7b72void Tff7b72thisTb4b4b4.Te6edf3usesThemeOutboundBubbleColorTb4b4b4;
Tff7b72void Te6edf3GlobalStateTb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3themeTb4b4b4;
Tff7b72const Te6edf3useThemeOutbound Tff7b72= Tff7b72thisTb4b4b4.Te6edf3usesThemeOutboundBubbleColorTb4b4b4;
Tff7b72return Tb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3styles Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72const Te6edf3cfg Tff7b72= Te6edf3GlobalStateTff7b72?Tb4b4b4.Te6edf3configTb4b4b4;
Tff7b72const Te6edf3m Tff7b72= Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4;
Tff7b72const Te6edf3isFailed Tff7b72= Tb4b4b4[Ta5d6ff"cancelled"Tb4b4b4, Ta5d6ff"failed"Tb4b4b4]Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3mTb4b4b4.Te6edf3stateTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3isFailedTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3mTb4b4b4.Te6edf3state Tff7b72=== Ta5d6ff"failed" Tff7b72&& Te6edf3mTb4b4b4.Te6edf3method Tff7b72=== Ta5d6ff"opportunistic"Tb4b4b4) Tb4b4b4{
Te6edf3stylesTb4b4b4[Ta5d6ff"background-color"Tb4b4b4] Tff7b72= Ta5d6ff"#b45309"Tb4b4b4;
Te6edf3stylesTb4b4b4[Ta5d6ff"color"Tb4b4b4] Tff7b72= Ta5d6ff"#ffffff"Tb4b4b4;
Tff7b72return Te6edf3stylesTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3color Tff7b72= Te6edf3cfgTff7b72?Tb4b4b4.Te6edf3message_failed_bubble_color Tff7b72|| Ta5d6ff"#ef4444"Tb4b4b4;
Te6edf3stylesTb4b4b4[Ta5d6ff"background-color"Tb4b4b4] Tff7b72= Te6edf3colorTb4b4b4;
Te6edf3stylesTb4b4b4[Ta5d6ff"color"Tb4b4b4] Tff7b72= Ta5d6ff"#ffffff"Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3chatItemTb4b4b4.Te6edf3is_outboundTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTff7b72?Tb4b4b4.Te6edf3_pendingPathfindingTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3raw Tff7b72= Te6edf3cfgTff7b72?Tb4b4b4.Te6edf3message_waiting_bubble_colorTb4b4b4;
Tff7b72let Te6edf3hex Tff7b72= Te6edf3raw Tff7b72!= Tff7b72null Tff7b72&& Tffa657StringTb4b4b4(Te6edf3rawTb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72!== Ta5d6ff"" Tff7b72? Tffa657StringTb4b4b4(Te6edf3rawTb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72: Ta5d6ff"#e5e7eb"Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3cfgTff7b72?Tb4b4b4.Te6edf3theme Tff7b72=== Ta5d6ff"dark" Tff7b72&& Ta5d6ff/^#e5e7eb$/iTb4b4b4.Te6edf3testTb4b4b4(Te6edf3hexTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3hex Tff7b72= Ta5d6ff"#3f3f46"Tb4b4b4;
Tb4b4b4}
Te6edf3stylesTb4b4b4[Ta5d6ff"background-color"Tb4b4b4] Tff7b72= Te6edf3hexTb4b4b4;
Te6edf3stylesTb4b4b4[Ta5d6ff"color"Tb4b4b4] Tff7b72= Tff7b72thisTb4b4b4.Te6edf3pickTextColorForBubbleBackgroundTb4b4b4(Te6edf3hexTb4b4b4)Tb4b4b4;
Te6edf3stylesTb4b4b4[Ta5d6ff"border"Tb4b4b4] Tff7b72= Tff7b72thisTb4b4b4.Te6edf3waitingBubbleBorderForHexTb4b4b4(Te6edf3hexTb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3stylesTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3useThemeOutboundTb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3color Tff7b72= Te6edf3cfgTff7b72?Tb4b4b4.Te6edf3message_outbound_bubble_color Tff7b72|| Ta5d6ff"#4f46e5"Tb4b4b4;
Te6edf3stylesTb4b4b4[Ta5d6ff"background-color"Tb4b4b4] Tff7b72= Te6edf3colorTb4b4b4;
Te6edf3stylesTb4b4b4[Ta5d6ff"color"Tb4b4b4] Tff7b72= Ta5d6ff"#ffffff"Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3cfgTff7b72?Tb4b4b4.Te6edf3message_inbound_bubble_colorTb4b4b4) Tb4b4b4{
Te6edf3stylesTb4b4b4[Ta5d6ff"background-color"Tb4b4b4] Tff7b72= Te6edf3cfgTb4b4b4.Te6edf3message_inbound_bubble_colorTb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3stylesTb4b4b4;
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3messageIconStyleTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3size Tff7b72= Tffa657NumberTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3message_icon_sizeTb4b4b4) Tff7b72|| T79c0ff28Tb4b4b4;
Tff7b72return Tb4b4b4{
Te6edf3widthTff7b72: Ta5d6ff`Tffd700${Te6edf3sizeTffd700}Ta5d6ffpxTa5d6ff`Tb4b4b4,
Te6edf3heightTff7b72: Ta5d6ff`Tffd700${Te6edf3sizeTffd700}Ta5d6ffpxTa5d6ff`Tb4b4b4,
Te6edf3minWidthTff7b72: Ta5d6ff`Tffd700${Te6edf3sizeTffd700}Ta5d6ffpxTa5d6ff`Tb4b4b4,
Te6edf3minHeightTff7b72: Ta5d6ff`Tffd700${Te6edf3sizeTffd700}Ta5d6ffpxTa5d6ff`Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3sendMessagePathfindingTooltipTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3GlobalStateTb4b4b4.Te6edf3detailedOutboundSendStatusTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"Finding path to peer (Reticulum is resolving a route). Your message sends as soon as the route is ready. Hover status icons in the bubble for details."Tb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.sending_ellipsis"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3isSyncingPropagationNodeTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4[
Ta5d6ff"path_requested"Tb4b4b4,
Ta5d6ff"link_establishing"Tb4b4b4,
Ta5d6ff"link_established"Tb4b4b4,
Ta5d6ff"request_sent"Tb4b4b4,
Ta5d6ff"receiving"Tb4b4b4,
Ta5d6ff"response_received"Tb4b4b4,
Tb4b4b4]Tb4b4b4.Te6edf3includesTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3propagationNodeStatusTff7b72?Tb4b4b4.Te6edf3stateTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3blockedDestinationsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3GlobalStateTb4b4b4.Te6edf3blockedDestinationsTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3showUnknownContactBannerTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3GlobalStateTb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3show_unknown_contact_banner Tff7b72!== Tff7b72falseTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3warnOnStrangerLinksEnabledTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3GlobalStateTb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3warn_on_stranger_links Tff7b72!== Tff7b72falseTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3filteredContactsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3contactsSearchTb4b4b4) Tff7b72return Tff7b72thisTb4b4b4.Te6edf3contactsTb4b4b4;
Tff7b72const Te6edf3s Tff7b72= Tff7b72thisTb4b4b4.Te6edf3contactsSearchTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3contactsTb4b4b4.Te6edf3filterTb4b4b4(
Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4.Te6edf3nameTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3sTb4b4b4) Tff7b72|| Te6edf3cTb4b4b4.Te6edf3remote_identity_hashTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3sTb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3isMobileTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/iTb4b4b4.Te6edf3testTb4b4b4(Te6edf3navigatorTb4b4b4.Te6edf3userAgentTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3latestConversationsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3conversationsTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff4Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3composeSuggestionsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isComposeInputFocusedTb4b4b4) Tff7b72return Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3search Tff7b72= Tff7b72thisTb4b4b4.Te6edf3composeAddressTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3suggestions Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3seenHashes Tff7b72= Tff7b72new Tffa657SetTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// 1. Check contacts
Tff7b72thisTb4b4b4.Te6edf3contactsTb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3hash Tff7b72= Te6edf3cTb4b4b4.Te6edf3remote_identity_hashTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3seenHashesTb4b4b4.Te6edf3hasTb4b4b4(Te6edf3hashTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3search Tff7b72|| Te6edf3cTb4b4b4.Te6edf3nameTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3searchTb4b4b4) Tff7b72|| Te6edf3hashTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3searchTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3suggestionsTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3nameTff7b72: Te6edf3cTb4b4b4.Te6edf3nameTb4b4b4,
Te6edf3hashTff7b72: Te6edf3hashTb4b4b4,
Te6edf3typeTff7b72: Ta5d6ff"contact"Tb4b4b4,
Te6edf3iconTff7b72: Ta5d6ff"account"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3seenHashesTb4b4b4.Te6edf3addTb4b4b4(Te6edf3hashTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;
T8b949e// 2. Check recent conversations
Tff7b72thisTb4b4b4.Te6edf3conversationsTb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3hash Tff7b72= Te6edf3cTb4b4b4.Te6edf3destination_hashTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3seenHashesTb4b4b4.Te6edf3hasTb4b4b4(Te6edf3hashTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3name Tff7b72= Te6edf3cTb4b4b4.Te6edf3custom_display_name Tff7b72?? Te6edf3cTb4b4b4.Te6edf3display_nameTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3search Tff7b72|| Te6edf3nameTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3searchTb4b4b4) Tff7b72|| Te6edf3hashTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3searchTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3suggestionsTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3nameTff7b72: Te6edf3nameTb4b4b4,
Te6edf3hashTff7b72: Te6edf3hashTb4b4b4,
Te6edf3typeTff7b72: Ta5d6ff"recent"Tb4b4b4,
Te6edf3iconTff7b72: Ta5d6ff"history"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3seenHashesTb4b4b4.Te6edf3addTb4b4b4(Te6edf3hashTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3suggestionsTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff10Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3canSendMessageTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// can send if message text is present
Tff7b72const Te6edf3messageText Tff7b72= Tff7b72thisTb4b4b4.Te6edf3newMessageTextTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3hasText Tff7b72= Te6edf3messageText Tff7b72!= Tff7b72null Tff7b72&& Te6edf3messageText Tff7b72!== Ta5d6ff""Tb4b4b4;
T8b949e// or if any attachments are present
Tff7b72const Te6edf3hasAttachments Tff7b72=
Tff7b72thisTb4b4b4.Te6edf3newMessageImagesTb4b4b4.Te6edf3length Tff7b72> T79c0ff0 Tff7b72||
Tff7b72thisTb4b4b4.Te6edf3newMessageAudio Tff7b72!= Tff7b72null Tff7b72||
Tff7b72thisTb4b4b4.Te6edf3newMessageFilesTb4b4b4.Te6edf3length Tff7b72> T79c0ff0 Tff7b72||
Tff7b72thisTb4b4b4.Te6edf3newMessageTelemetry Tff7b72!= Tff7b72nullTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3hasText Tff7b72&& Tff7b72!Te6edf3hasAttachmentsTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3selectedPeerChatItemsTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// get all chat items related to the selected peer
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3chatItemsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3chatItemTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"lxmf_message"Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3isFromSelectedPeer Tff7b72=
Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3source_hash Tff7b72=== Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4;
Tff7b72const Te6edf3isToSelectedPeer Tff7b72=
Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3destination_hash Tff7b72=== Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tb4b4b4(Te6edf3isFromSelectedPeer Tff7b72|| Te6edf3isToSelectedPeerTb4b4b4)Tb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
T8b949e// filter telemetry if disabled
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3showTelemetryInChat Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3isTelemetryOnlyTb4b4b4(Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3is_reactionTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3hasRenderableContentTb4b4b4(Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
T8b949e// no peer, so no chat items!
Tff7b72return Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3selectedPeerTelemetryItemsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4) Tff7b72return Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3chatItems
Tb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3chatItemTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"lxmf_message"Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3isFromSelectedPeer Tff7b72=
Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3source_hash Tff7b72=== Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4;
Tff7b72const Te6edf3isToSelectedPeer Tff7b72=
Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3destination_hash Tff7b72=== Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tb4b4b4(Te6edf3isFromSelectedPeer Tff7b72|| Te6edf3isToSelectedPeerTb4b4b4)Tb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3isTelemetryOnlyTb4b4b4(Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}Tb4b4b4)
Tb4b4b4.Te6edf3reverseTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3selectedPeerChatDisplayGroupsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3items Tff7b72= Tff7b72thisTb4b4b4.Te6edf3selectedPeerChatItemsTb4b4b4;
Tff7b72const Te6edf3n Tff7b72= Te6edf3itemsTb4b4b4.Te6edf3lengthTb4b4b4;
Tff7b72const Te6edf3groups Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72let Te6edf3r Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72while Tb4b4b4(Te6edf3r Tff7b72< Te6edf3nTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3item Tff7b72= Te6edf3itemsTb4b4b4[Te6edf3n Tff7b72- T79c0ff1 Tff7b72- Te6edf3rTb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3canMergeImageIntoImageStripTb4b4b4(Te6edf3itemTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3run Tff7b72= Tb4b4b4[Te6edf3itemTb4b4b4]Tb4b4b4;
Tff7b72let Te6edf3j Tff7b72= Te6edf3r Tff7b72+ T79c0ff1Tb4b4b4;
Tff7b72while Tb4b4b4(Te6edf3j Tff7b72< Te6edf3n Tff7b72&& Te6edf3runTb4b4b4.Te6edf3length Tff7b72< T79c0ff12Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3next Tff7b72= Te6edf3itemsTb4b4b4[Te6edf3n Tff7b72- T79c0ff1 Tff7b72- Te6edf3jTb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3nextTb4b4b4.Te6edf3is_outbound Tff7b72!== Te6edf3itemTb4b4b4.Te6edf3is_outboundTb4b4b4) Tff7b72breakTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3canMergeImageIntoImageStripTb4b4b4(Te6edf3nextTb4b4b4)Tb4b4b4) Tff7b72breakTb4b4b4;
Te6edf3runTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3nextTb4b4b4)Tb4b4b4;
Te6edf3jTff7b72++Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3runTb4b4b4.Te6edf3length Tff7b72>= T79c0ff2Tb4b4b4) Tb4b4b4{
Te6edf3groupsTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3typeTff7b72: Ta5d6ff"imageGroup"Tb4b4b4,
Te6edf3itemsTff7b72: Te6edf3runTb4b4b4,
Te6edf3keyTff7b72: Te6edf3runTb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3xTb4b4b4) Tb4b4b4=> Te6edf3xTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4)Tb4b4b4.Te6edf3joinTb4b4b4(Ta5d6ff"-"Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3r Tff7b72= Te6edf3jTb4b4b4;
Tff7b72continueTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Te6edf3groupsTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3typeTff7b72: Ta5d6ff"single"Tb4b4b4,
Te6edf3chatItemTff7b72: Te6edf3itemTb4b4b4,
Te6edf3keyTff7b72: Te6edf3itemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3rTff7b72++Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3groupsTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3selectedPeerChatDisplayGroupsOldestFirstTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3displayGroupsOldestFirstTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectedPeerChatDisplayGroupsTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3conversationViewerSelfTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3useVirtualMessageListTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3n Tff7b72= Tff7b72thisTb4b4b4.Te6edf3selectedPeerChatDisplayGroupsTb4b4b4.Te6edf3lengthTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3n Tff7b72< Te6edf3MIN_VIRTUAL_DISPLAY_GROUPSTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3GlobalStateTff7b72?Tb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3message_list_virtualization Tff7b72!== Tff7b72falseTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3oldestMessageIdTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectedPeerChatItemsTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3selectedPeerChatItemsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3idTb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3hasFailedOrCancelledMessagesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3selectedPeerChatItemsTb4b4b4.Te6edf3someTb4b4b4(
Tb4b4b4(Te6edf3itemTb4b4b4) Tb4b4b4=> Te6edf3itemTb4b4b4.Te6edf3is_outbound Tff7b72&& Tb4b4b4[Ta5d6ff"failed"Tb4b4b4, Ta5d6ff"cancelled"Tb4b4b4]Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3itemTb4b4b4.Te6edf3lxmf_messageTff7b72?Tb4b4b4.Te6edf3stateTb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3telemetryModalGradientSuffixTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3h Tff7b72= Tff7b72thisTb4b4b4.Te6edf3selectedPeerTff7b72?Tb4b4b4.Te6edf3destination_hash Tff7b72|| Ta5d6ff"default"Tb4b4b4;
Tff7b72return Te6edf3hTb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/[^a-zA-Z0-9_-]/gTb4b4b4, Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff24Tb4b4b4) Tff7b72|| Ta5d6ff"default"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3watchTff7b72: Tb4b4b4{
Te6edf3selectedPeerTff7b72: Tb4b4b4{
Te6edf3handlerTb4b4b4(Te6edf3newPeerTb4b4b4, Te6edf3oldPeerTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3oldPeerTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3saveDraftTb4b4b4(Te6edf3oldPeerTb4b4b4.Te6edf3destination_hashTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3teardownPeerHeaderResizeObserverTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3scrollBottomGen Tff7b72+= T79c0ff1Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3messagesViewportReady Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3newPeerTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3peerHeaderCompact Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3checkIfSelectedPeerBlockedTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3strangerBannerDismissed Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3checkIfStrangerPeerTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3prevScrollWantedLoadPrevious Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3initialLoadTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3newPeerTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3loadDraftTb4b4b4(Te6edf3newPeerTb4b4b4.Te6edf3destination_hashTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tff7b72thisTb4b4b4.Te6edf3setupPeerHeaderResizeObserverTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3immediateTff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3useVirtualMessageListTff7b72: Tb4b4b4{
Te6edf3handlerTb4b4b4(Te6edf3valueTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3value Tff7b72&& Tff7b72!Tff7b72thisTb4b4b4.Te6edf3initialLoadActiveTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3messagesViewportReady Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3newMessageTextTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3adjustTextareaHeightTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3configTff7b72: Tb4b4b4{
Te6edf3handlerTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3checkTranslatorTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3deepTff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3blockedDestinationsTff7b72: Tb4b4b4{
Te6edf3handlerTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3checkIfSelectedPeerBlockedTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3deepTff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3selectedPeerChatItemsTff7b72: Tb4b4b4{
Tff7b72async Te6edf3handlerTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3processAudioForSelectedPeerChatItemsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tff7b72thisTb4b4b4.Te6edf3_scheduleOutboundSendStatusTickTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3deepTff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3createdTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3_outboundQueue Tff7b72= Te6edf3createOutboundQueueTb4b4b4(Tb4b4b4(Te6edf3jobTb4b4b4) Tb4b4b4=> Tff7b72thisTb4b4b4.Te6edf3_executeOutboundSendJobTb4b4b4(Te6edf3jobTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3sendStatusUiMs Tff7b72= Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3mountedTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3updateTimer Tff7b72= Te6edf3setIntervalTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3now Tff7b72= Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4, T79c0ff30000Tb4b4b4)Tb4b4b4; T8b949e// Update every 30 seconds
T8b949e// listen for websocket messages
Te6edf3WebSocketConnectionTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"message"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3onWebsocketMessageTb4b4b4)Tb4b4b4;
T8b949e// listen for compose new message event
Te6edf3GlobalEmitterTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"compose-new-message"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3onComposeNewMessageEventTb4b4b4)Tb4b4b4;
T8b949e// listen for contact updates to refresh stranger banner
Te6edf3GlobalEmitterTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"contact-updated"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3onContactUpdatedForBannerTb4b4b4)Tb4b4b4;
T8b949e// check translator
Tff7b72thisTb4b4b4.Te6edf3checkTranslatorTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// fetch contacts for suggestions
Tff7b72thisTb4b4b4.Te6edf3fetchContactsTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// fetch propagation status
Tff7b72thisTb4b4b4.Te6edf3updatePropagationNodeStatusTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3propagationStatusInterval Tff7b72= Te6edf3setIntervalTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3updatePropagationNodeStatusTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4, T79c0ff2000Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3_scheduleOutboundSendStatusTickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3loadUserStickersTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3_onWindowResize Tff7b72= Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3windowWidth Tff7b72= Tffa657windowTb4b4b4.Te6edf3innerWidthTb4b4b4;
Tb4b4b4}Tb4b4b4;
Tffa657windowTb4b4b4.Te6edf3addEventListenerTb4b4b4(Ta5d6ff"resize"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3_onWindowResizeTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3beforeUnmountTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3scrollBottomGen Tff7b72+= T79c0ff1Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3teardownPeerHeaderResizeObserverTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3saveDraftTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3_onWindowResizeTb4b4b4) Tb4b4b4{
Tffa657windowTb4b4b4.Te6edf3removeEventListenerTb4b4b4(Ta5d6ff"resize"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3_onWindowResizeTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3updateTimerTb4b4b4) Tb4b4b4{
Te6edf3clearIntervalTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3updateTimerTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3sendStatusTickIntervalTb4b4b4) Tb4b4b4{
Te6edf3clearIntervalTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3sendStatusTickIntervalTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3sendStatusTickInterval Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
T8b949e// stop listening for websocket messages
Te6edf3WebSocketConnectionTb4b4b4.Te6edf3offTb4b4b4(Ta5d6ff"message"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3onWebsocketMessageTb4b4b4)Tb4b4b4;
Te6edf3GlobalEmitterTb4b4b4.Te6edf3offTb4b4b4(Ta5d6ff"compose-new-message"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3onComposeNewMessageEventTb4b4b4)Tb4b4b4;
Te6edf3GlobalEmitterTb4b4b4.Te6edf3offTb4b4b4(Ta5d6ff"contact-updated"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3onContactUpdatedForBannerTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3propagationStatusIntervalTb4b4b4) Tb4b4b4{
Te6edf3clearIntervalTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3propagationStatusIntervalTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3methodsTff7b72: Tb4b4b4{
Te6edf3setupPeerHeaderResizeObserverTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3teardownPeerHeaderResizeObserverTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3root Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3conversationPeerHeaderTb4b4b4;
Tff7b72const Te6edf3el Tff7b72= Te6edf3root Tff7b72&& Te6edf3rootTb4b4b4.Te6edf3$el Tff7b72? Te6edf3rootTb4b4b4.Te6edf3$el Tff7b72: Te6edf3rootTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3el Tff7b72|| Tff7b72typeof Te6edf3ResizeObserver Tff7b72=== Ta5d6ff"undefined"Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3threshold Tff7b72= T79c0ff820Tb4b4b4;
Tff7b72const Te6edf3apply Tff7b72= Tb4b4b4(Te6edf3widthTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3peerHeaderCompact Tff7b72= Te6edf3width Tff7b72> T79c0ff0 Tff7b72&& Te6edf3width Tff7b72< Te6edf3thresholdTb4b4b4;
Tb4b4b4}Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3peerHeaderResizeObserver Tff7b72= Tff7b72new Te6edf3ResizeObserverTb4b4b4(Tb4b4b4(Te6edf3entriesTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3w Tff7b72= Te6edf3entriesTb4b4b4[T79c0ff0Tb4b4b4]Tff7b72?Tb4b4b4.Te6edf3contentRectTff7b72?Tb4b4b4.Te6edf3width Tff7b72?? T79c0ff0Tb4b4b4;
Te6edf3applyTb4b4b4(Te6edf3wTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3peerHeaderResizeObserverTb4b4b4.Te6edf3observeTb4b4b4(Te6edf3elTb4b4b4)Tb4b4b4;
Te6edf3applyTb4b4b4(Te6edf3elTb4b4b4.Te6edf3clientWidthTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3teardownPeerHeaderResizeObserverTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3peerHeaderResizeObserverTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3peerHeaderResizeObserverTb4b4b4.Te6edf3disconnectTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3peerHeaderResizeObserver Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3renderMarkdownTb4b4b4(Te6edf3textTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3MarkdownRendererTb4b4b4.Te6edf3renderTb4b4b4(Te6edf3textTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3messageMarkdownSingleEmojiTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3c Tff7b72= Te6edf3chatItemTff7b72?Tb4b4b4.Te6edf3lxmf_messageTff7b72?Tb4b4b4.Te6edf3contentTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3cTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3getParsedItemsTb4b4b4(Te6edf3chatItemTb4b4b4)Tff7b72?Tb4b4b4.Te6edf3isOnlyPaperMessageTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3getParsedItemsTb4b4b4(Te6edf3chatItemTb4b4b4)Tff7b72?Tb4b4b4.Te6edf3isOnlyMapLinkTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3shouldHideAutoImageCaptionTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3MarkdownRendererTb4b4b4.Te6edf3isSingleEmojiMessageTb4b4b4(Te6edf3cTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3messageMarkdownFontSizePxTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3base Tff7b72= Tffa657NumberTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3message_font_sizeTb4b4b4) Tff7b72|| T79c0ff14Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3messageMarkdownSingleEmojiTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tffa657MathTb4b4b4.Te6edf3roundTb4b4b4(Te6edf3base Tff7b72* T79c0ff2.75Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3baseTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3handleMessageClickTb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3hex32 Tff7b72= Ta5d6ff/^[a-fA-F0-9]{32}$/Tb4b4b4;
Tff7b72const Te6edf3nomadnetLink Tff7b72= Te6edf3eventTb4b4b4.Te6edf3targetTb4b4b4.Te6edf3closestTb4b4b4(Ta5d6ff".nomadnet-link"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3nomadnetLinkTb4b4b4) Tb4b4b4{
Te6edf3eventTb4b4b4.Te6edf3preventDefaultTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3url Tff7b72= Te6edf3nomadnetLinkTb4b4b4.Te6edf3getAttributeTb4b4b4(Ta5d6ff"data-nomadnet-url"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3urlTb4b4b4) Tb4b4b4{
Tff7b72const Tb4b4b4[Te6edf3hashTb4b4b4, Tb4b4b4...Te6edf3pathPartsTb4b4b4] Tff7b72= Te6edf3urlTb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff":"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3path Tff7b72= Te6edf3pathPartsTb4b4b4.Te6edf3joinTb4b4b4(Ta5d6ff":"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3hex32Tb4b4b4.Te6edf3testTb4b4b4(Te6edf3hashTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3routeName Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$routeTb4b4b4.Te6edf3metaTb4b4b4.Te6edf3isPopout Tff7b72? Ta5d6ff"nomadnetwork-popout" Tff7b72: Ta5d6ff"nomadnetwork"Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3$routerTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3nameTff7b72: Te6edf3routeNameTb4b4b4,
Te6edf3paramsTff7b72: Tb4b4b4{ Te6edf3destinationHashTff7b72: Te6edf3hash Tb4b4b4}Tb4b4b4,
Te6edf3queryTff7b72: Tb4b4b4{ Te6edf3pathTff7b72: Te6edf3path Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3lxmfLink Tff7b72= Te6edf3eventTb4b4b4.Te6edf3targetTb4b4b4.Te6edf3closestTb4b4b4(Ta5d6ff".lxmf-link"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3lxmfLinkTb4b4b4) Tb4b4b4{
Te6edf3eventTb4b4b4.Te6edf3preventDefaultTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3address Tff7b72= Te6edf3lxmfLinkTb4b4b4.Te6edf3getAttributeTb4b4b4(Ta5d6ff"data-lxmf-address"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3address Tff7b72&& Te6edf3hex32Tb4b4b4.Te6edf3testTb4b4b4(Te6edf3addressTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3$routerTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff"messages"Tb4b4b4,
Te6edf3paramsTff7b72: Tb4b4b4{ Te6edf3destinationHashTff7b72: Te6edf3address Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3standardLink Tff7b72= Te6edf3eventTb4b4b4.Te6edf3targetTb4b4b4.Te6edf3closestTb4b4b4(Ta5d6ff"a[href]"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3standardLinkTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3hrefRaw Tff7b72= Tffa657StringTb4b4b4(Te6edf3standardLinkTb4b4b4.Te6edf3getAttributeTb4b4b4(Ta5d6ff"href"Tb4b4b4) Tff7b72|| Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3safeHttp Tff7b72= Te6edf3LinkUtilsTb4b4b4.Te6edf3httpUrlHrefOrNullTb4b4b4(Te6edf3hrefRawTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3safeHttpTb4b4b4) Tb4b4b4{
Te6edf3eventTb4b4b4.Te6edf3preventDefaultTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Te6edf3eventTb4b4b4.Te6edf3preventDefaultTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isStrangerPeer Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3warnOnStrangerLinksEnabledTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3proceed Tff7b72= Tff7b72await Te6edf3DialogUtilsTb4b4b4.Te6edf3confirmTb4b4b4(
Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.stranger_link_open_confirm"Tb4b4b4, Tb4b4b4{ Te6edf3urlTff7b72: Te6edf3safeHttp Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3proceedTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tffa657windowTb4b4b4.Te6edf3openTb4b4b4(Te6edf3safeHttpTb4b4b4, Ta5d6ff"_blank"Tb4b4b4, Ta5d6ff"noopener,noreferrer"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3updatePropagationNodeStatusTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/lxmf/propagation-node/status"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3propagationNodeStatus Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3propagation_node_statusTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
T8b949e// do nothing on error
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3syncPropagationNodeTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3GlobalEmitterTb4b4b4.Te6edf3emitTb4b4b4(Ta5d6ff"sync-propagation-node"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3copyMyAddressTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72await Te6edf3navigatorTb4b4b4.Te6edf3clipboardTb4b4b4.Te6edf3writeTextTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3myLxmfAddressHashTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.address_copied"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.failed_copy_address"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3focusComposeInputTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3input Tff7b72= Tffa657documentTb4b4b4.Te6edf3getElementByIdTb4b4b4(Ta5d6ff"compose-input"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3inputTb4b4b4) Tb4b4b4{
Te6edf3inputTb4b4b4.Te6edf3focusTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3fetchContactsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/telephone/contacts"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3contacts Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3contacts Tff7b72?? Tb4b4b4(Tffa657ArrayTb4b4b4.Te6edf3isArrayTb4b4b4(Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4) Tff7b72? Te6edf3responseTb4b4b4.Te6edf3data Tff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Ta5d6ff"Failed to fetch contacts:"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3checkTranslatorTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3translator_enabledTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3hasTranslator Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/translator/languages"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3translatorLanguages Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3languages Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3hasTranslator Tff7b72= Tff7b72thisTb4b4b4.Te6edf3translatorLanguagesTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Ta5d6ff"Failed to check translator:"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3hasTranslator Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3translateMessageTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3newMessageText Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3isTranslatingMessageTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isTranslatingMessage Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72const Te6edf3targetLang Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$i18nTb4b4b4.Te6edf3locale Tff7b72|| Ta5d6ff"en"Tb4b4b4;
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/translator/translate"Tb4b4b4, Tb4b4b4{
Te6edf3textTff7b72: Tff7b72thisTb4b4b4.Te6edf3newMessageTextTb4b4b4,
Te6edf3source_langTff7b72: Ta5d6ff"auto"Tb4b4b4,
Te6edf3target_langTff7b72: Te6edf3targetLangTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3translated_textTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3newMessageText Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3translated_textTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3adjustTextareaHeightTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Translation failed:"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.translation_failed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isTranslatingMessage Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3adjustTextareaHeightTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3textarea Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4[Ta5d6ff"message-input"Tb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3textareaTb4b4b4) Tb4b4b4{
Te6edf3textareaTb4b4b4.Te6edf3styleTb4b4b4.Te6edf3height Tff7b72= Ta5d6ff"auto"Tb4b4b4;
Te6edf3textareaTb4b4b4.Te6edf3styleTb4b4b4.Te6edf3height Tff7b72= Tffa657MathTb4b4b4.Te6edf3minTb4b4b4(Te6edf3textareaTb4b4b4.Te6edf3scrollHeightTb4b4b4, T79c0ff200Tb4b4b4) Tff7b72+ Ta5d6ff"px"Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3checkIfSelectedPeerBlockedTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isSelectedPeerBlocked Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3isSelectedPeerBlocked Tff7b72= Te6edf3GlobalStateTb4b4b4.Te6edf3blockedDestinationsTb4b4b4.Te6edf3someTb4b4b4(
Tb4b4b4(Te6edf3bTb4b4b4) Tb4b4b4=> Te6edf3bTb4b4b4.Te6edf3destination_hash Tff7b72=== Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hash
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onContactUpdatedForBannerTb4b4b4(Te6edf3dataTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectedPeerTff7b72?Tb4b4b4.Te6edf3destination_hash Tff7b72=== Te6edf3dataTff7b72?Tb4b4b4.Te6edf3remote_identity_hashTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isStrangerPeer Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3strangerBannerDismissed Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3checkIfStrangerPeerTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isStrangerPeer Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3is_contact Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3contact_imageTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isStrangerPeer Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(
Ta5d6ff`Ta5d6ff/api/v1/telephone/contacts/check/Tffd700${Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTffd700}Ta5d6ff`
Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isStrangerPeer Tff7b72= Tff7b72!Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3is_contactTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isStrangerPeer Tff7b72= Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3is_contact Tff7b72&& Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3contact_imageTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3addStrangerAsContactTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3displayName Tff7b72=
Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3custom_display_name Tff7b72?? Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3display_name Tff7b72?? Ta5d6ff"Unknown"Tb4b4b4;
Tff7b72await Te6edf3fetchTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/telephone/contactsTa5d6ff`Tb4b4b4, Tb4b4b4{
Te6edf3methodTff7b72: Ta5d6ff"POST"Tb4b4b4,
Te6edf3headersTff7b72: Tb4b4b4{ Ta5d6ff"Content-Type"Tff7b72: Ta5d6ff"application/json" Tb4b4b4}Tb4b4b4,
Te6edf3bodyTff7b72: Tffa657JSONTb4b4b4.Te6edf3stringifyTb4b4b4(Tb4b4b4{
Te6edf3remote_identity_hashTff7b72: Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4,
Te6edf3lxmf_addressTff7b72: Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4,
Te6edf3nameTff7b72: Te6edf3displayNameTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isStrangerPeer Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3strangerBannerDismissed Tff7b72= Tff7b72trueTb4b4b4;
Te6edf3GlobalEmitterTb4b4b4.Te6edf3emitTb4b4b4(Ta5d6ff"contact-updated"Tb4b4b4, Tb4b4b4{
Te6edf3remote_identity_hashTff7b72: Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3$emitTb4b4b4(Ta5d6ff"reload-conversations"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to add contact:"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3loadDraftTb4b4b4(Te6edf3destinationHashTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3drafts Tff7b72= Tffa657JSONTb4b4b4.Te6edf3parseTb4b4b4(Te6edf3localStorageTb4b4b4.Te6edf3getItemTb4b4b4(Ta5d6ff"meshchat.drafts"Tb4b4b4) Tff7b72|| Ta5d6ff"{}"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newMessageText Tff7b72= Te6edf3draftsTb4b4b4[Te6edf3destinationHashTb4b4b4] Tff7b72|| Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3adjustTextareaHeightTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to load draft:"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3saveDraftTb4b4b4(Te6edf3destinationHashTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3drafts Tff7b72= Tffa657JSONTb4b4b4.Te6edf3parseTb4b4b4(Te6edf3localStorageTb4b4b4.Te6edf3getItemTb4b4b4(Ta5d6ff"meshchat.drafts"Tb4b4b4) Tff7b72|| Ta5d6ff"{}"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newMessageTextTb4b4b4) Tb4b4b4{
Te6edf3draftsTb4b4b4[Te6edf3destinationHashTb4b4b4] Tff7b72= Tff7b72thisTb4b4b4.Te6edf3newMessageTextTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72delete Te6edf3draftsTb4b4b4[Te6edf3destinationHashTb4b4b4]Tb4b4b4;
Tb4b4b4}
Te6edf3localStorageTb4b4b4.Te6edf3setItemTb4b4b4(Ta5d6ff"meshchat.drafts"Tb4b4b4, Tffa657JSONTb4b4b4.Te6edf3stringifyTb4b4b4(Te6edf3draftsTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to save draft:"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3closeTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3$emitTb4b4b4(Ta5d6ff"close"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3getMessagesScrollElementTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3messagesScroll Tff7b72?? Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onMessagesScrollTb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3element Tff7b72= Te6edf3eventTb4b4b4.Te6edf3targetTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3autoScrollOnNewMessage Tff7b72= Te6edf3isNearBottomTb4b4b4(Te6edf3elementTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wantLoad Tff7b72= Te6edf3shouldLoadPreviousMessagesTb4b4b4(Te6edf3elementTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3wantLoad Tff7b72&& Tff7b72!Tff7b72thisTb4b4b4.Te6edf3prevScrollWantedLoadPreviousTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3loadPreviousTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3prevScrollWantedLoadPrevious Tff7b72= Te6edf3wantLoadTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3initialLoadTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3initialLoadActive Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3messagesViewportReady Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3chatItems Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3hasMorePrevious Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3selectedPeerPath Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3selectedPeerLxmfStampInfo Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3selectedPeerSignalMetrics Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3initialLoadActive Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3messagesViewportReady Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3getPeerPathTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3getPeerLxmfStampInfoTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3getPeerSignalMetricsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3warmPathToPeerTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3markConversationAsReadTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3loadPreviousTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3initialLoadActive Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3scrollMessagesToBottomTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3autoLoadAudioAttachmentsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3loadPreviousTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// Pagination requests must not overlap. Initial page loads (empty thread) must still run
T8b949e// if a previous peer's fetch or a scroll load left isLoadingPrevious true; otherwise
T8b949e// initialLoad clears chatItems and loadPrevious returns without fetching (empty UI).
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isLoadingPrevious Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3oldestMessageId Tff7b72!= Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3loadPreviousInFlight Tff7b72+= T79c0ff1Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isLoadingPrevious Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3seq Tff7b72= Tff7b72++Tff7b72thisTb4b4b4.Te6edf3lxmfMessagesRequestSequenceTb4b4b4;
T8b949e// fetch lxmf messages from "us to destination" and from "destination to us"
Tff7b72const Te6edf3pageSize Tff7b72= T79c0ff30Tb4b4b4;
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(
Ta5d6ff`Ta5d6ff/api/v1/lxmf-messages/conversation/Tffd700${Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTffd700}Ta5d6ff`Tb4b4b4,
Tb4b4b4{
Te6edf3paramsTff7b72: Tb4b4b4{
Te6edf3countTff7b72: Te6edf3pageSizeTb4b4b4,
Te6edf3orderTff7b72: Ta5d6ff"desc"Tb4b4b4,
Te6edf3after_idTff7b72: Tff7b72thisTb4b4b4.Te6edf3oldestMessageIdTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}
Tb4b4b4)Tb4b4b4;
T8b949e// do nothing if response is for a previous request
Tff7b72if Tb4b4b4(Te6edf3seq Tff7b72!== Tff7b72thisTb4b4b4.Te6edf3lxmfMessagesRequestSequenceTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Ta5d6ff"ignoring response for previous lxmf messages request"Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
T8b949e// convert lxmf messages to chat items
Tff7b72const Te6edf3chatItems Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3lxmfMessages Tff7b72= Te6edf3mergeLxmfReactionRowsIntoMessagesTb4b4b4(Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3lxmf_messagesTb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3lxmfMessage Tff7b72of Te6edf3lxmfMessagesTb4b4b4) Tb4b4b4{
Te6edf3chatItemsTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3typeTff7b72: Ta5d6ff"lxmf_message"Tb4b4b4,
Te6edf3is_outboundTff7b72: Tff7b72thisTb4b4b4.Te6edf3myLxmfAddressHash Tff7b72=== Te6edf3lxmfMessageTb4b4b4.Te6edf3source_hashTb4b4b4,
Te6edf3lxmf_messageTff7b72: Te6edf3lxmfMessageTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3scrollEl Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3messagesScrollTb4b4b4;
Tff7b72const Te6edf3needsAnchor Tff7b72= Te6edf3scrollEl Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3chatItemsTb4b4b4.Te6edf3length Tff7b72> T79c0ff0 Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3oldestMessageId Tff7b72!= Tff7b72nullTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3needsAnchorTb4b4b4) Tb4b4b4{
Te6edf3scrollElTb4b4b4.Te6edf3styleTb4b4b4.Te6edf3overflowY Tff7b72= Ta5d6ff"hidden"Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3prevScrollHeight Tff7b72= Te6edf3scrollEl Tff7b72? Te6edf3scrollElTb4b4b4.Te6edf3scrollHeight Tff7b72: T79c0ff0Tb4b4b4;
Tff7b72const Te6edf3prevScrollTop Tff7b72= Te6edf3scrollEl Tff7b72? Te6edf3scrollElTb4b4b4.Te6edf3scrollTop Tff7b72: T79c0ff0Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3chatItem Tff7b72of Te6edf3chatItemsTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3chatItemsTb4b4b4.Te6edf3unshiftTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3needsAnchorTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3newScrollHeight Tff7b72= Te6edf3scrollElTb4b4b4.Te6edf3scrollHeightTb4b4b4;
Tff7b72const Te6edf3delta Tff7b72= Te6edf3newScrollHeight Tff7b72- Te6edf3prevScrollHeightTb4b4b4;
Te6edf3scrollElTb4b4b4.Te6edf3scrollTop Tff7b72= Te6edf3prevScrollTop Tff7b72+ Te6edf3deltaTb4b4b4;
Te6edf3scrollElTb4b4b4.Te6edf3styleTb4b4b4.Te6edf3overflowY Tff7b72= Ta5d6ff""Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3chatItemsTb4b4b4.Te6edf3length Tff7b72< Te6edf3pageSizeTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3hasMorePrevious Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
T8b949e// auto load audio
Tff7b72thisTb4b4b4.Te6edf3autoLoadAudioAttachmentsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3hasMorePrevious Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3loadPreviousInFlight Tff7b72= Tffa657MathTb4b4b4.Te6edf3maxTb4b4b4(T79c0ff0Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3loadPreviousInFlight Tff7b72- T79c0ff1Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isLoadingPrevious Tff7b72= Tff7b72thisTb4b4b4.Te6edf3loadPreviousInFlight Tff7b72> T79c0ff0Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3getParsedItemsTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3content Tff7b72= Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3contentTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3contentTb4b4b4) Tff7b72return Tff7b72nullTb4b4b4;
Tff7b72const Te6edf3items Tff7b72= Tb4b4b4{
Te6edf3contactTff7b72: Tff7b72nullTb4b4b4,
Te6edf3paperMessageTff7b72: Tff7b72nullTb4b4b4,
Te6edf3mapLinkTff7b72: Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4;
T8b949e// Parse contact: Contact: ivan <ca314c30b27eacec5f6ca6ac504e94c9> [LXMF: ...] [LXST: ...]
Tff7b72const Te6edf3contactMatch Tff7b72= Te6edf3contentTb4b4b4.Te6edf3matchTb4b4b4(
T8b949e// eslint-disable-next-line security/detect-unsafe-regex -- bounded pattern, single-line contact header
Ta5d6ff/^Contact:\s+(.+?)\s+<([a-fA-F0-9]{32})>(?:\s+\[LXMF:\s+([a-fA-F0-9]{32})\])?(?:\s+\[LXST:\s+([a-fA-F0-9]{32})\])?/i
Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3contactMatchTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3contactHash Tff7b72= Te6edf3contactMatchTb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3lxmfAddress Tff7b72= Te6edf3contactMatchTb4b4b4[T79c0ff3Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3lxstAddress Tff7b72= Te6edf3contactMatchTb4b4b4[T79c0ff4Tb4b4b4]Tb4b4b4;
T8b949e// try to find enriched info from existing conversations/peers
Tff7b72const Te6edf3existing Tff7b72= Tff7b72thisTb4b4b4.Te6edf3conversationsTb4b4b4.Te6edf3findTb4b4b4(
Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=>
Te6edf3cTb4b4b4.Te6edf3destination_hash Tff7b72=== Te6edf3contactHash Tff7b72||
Te6edf3cTb4b4b4.Te6edf3destination_hash Tff7b72=== Te6edf3lxmfAddress Tff7b72||
Te6edf3cTb4b4b4.Te6edf3destination_hash Tff7b72=== Te6edf3lxstAddress
Tb4b4b4)Tb4b4b4;
Te6edf3itemsTb4b4b4.Te6edf3contact Tff7b72= Tb4b4b4{
Te6edf3nameTff7b72: Te6edf3contactMatchTb4b4b4[T79c0ff1Tb4b4b4]Tb4b4b4,
Te6edf3hashTff7b72: Te6edf3contactHashTb4b4b4,
Te6edf3lxmf_addressTff7b72: Te6edf3lxmfAddressTb4b4b4,
Te6edf3lxst_addressTff7b72: Te6edf3lxstAddressTb4b4b4,
Te6edf3custom_imageTff7b72: Te6edf3existingTff7b72?Tb4b4b4.Te6edf3contact_imageTb4b4b4,
Te6edf3lxmf_user_iconTff7b72: Te6edf3existingTff7b72?Tb4b4b4.Te6edf3lxmf_user_iconTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}
T8b949e// Parse paper message link
Tff7b72const Te6edf3paperMatch Tff7b72= Te6edf3contentTb4b4b4.Te6edf3matchTb4b4b4(Ta5d6ff/(lxm|lxmf):\/\/[a-zA-Z0-9+/=._-]+/iTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3paperMatchTb4b4b4) Tb4b4b4{
Te6edf3itemsTb4b4b4.Te6edf3paperMessage Tff7b72= Te6edf3paperMatchTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4;
T8b949e// if content is only the paper message, or it already contains the detected text,
T8b949e// we'll hide the raw content div to avoid double rendering.
Tff7b72const Te6edf3trimmedContent Tff7b72= Te6edf3contentTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3trimmedContent Tff7b72=== Te6edf3itemsTb4b4b4.Te6edf3paperMessage Tff7b72|| Te6edf3trimmedContentTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"Paper Message detected"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3itemsTb4b4b4.Te6edf3isOnlyPaperMessage Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72const Te6edf3mapUri Tff7b72= Te6edf3findMapUriInContentTb4b4b4(Te6edf3contentTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3mapUri Tff7b72&& Tff7b72!Te6edf3itemsTb4b4b4.Te6edf3paperMessageTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3parsed Tff7b72= Te6edf3parseMeshchatMapUriTb4b4b4(Te6edf3mapUriTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3parsedTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3kind Tff7b72= Te6edf3mapLinkKindFromMessageTb4b4b4(Te6edf3contentTb4b4b4, Te6edf3parsedTb4b4b4)Tb4b4b4;
Tff7b72let Te6edf3t Tff7b72= Te6edf3contentTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3replaceTb4b4b4(Te6edf3mapUriTb4b4b4, Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3t Tff7b72= Te6edf3t
Tb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/^MeshChatX\s+map\s+ping:\s*/iTb4b4b4, Ta5d6ff""Tb4b4b4)
Tb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/^MeshChatX\s+map:\s*/iTb4b4b4, Ta5d6ff""Tb4b4b4)
Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3itemsTb4b4b4.Te6edf3mapLink Tff7b72= Tb4b4b4{ Te6edf3uriTff7b72: Te6edf3mapUriTb4b4b4, Te6edf3parsedTb4b4b4, Te6edf3kind Tb4b4b4}Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3t Tff7b72=== Ta5d6ff""Tb4b4b4) Tb4b4b4{
Te6edf3itemsTb4b4b4.Te6edf3isOnlyMapLink Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tff7b72return Te6edf3itemsTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3addContactTb4b4b4(Te6edf3nameTb4b4b4, Te6edf3hashTb4b4b4, Te6edf3lxmf_address Tff7b72= Tff7b72nullTb4b4b4, Te6edf3lxst_address Tff7b72= Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
T8b949e// Check if contact already exists
Tff7b72const Te6edf3checkResponse Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/telephone/contacts/check/Tffd700${Te6edf3hashTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3checkResponseTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3idTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3infoTb4b4b4(Ta5d6ff`Tffd700${Te6edf3nameTffd700}Ta5d6ff is already in your contactsTa5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/telephone/contacts"Tb4b4b4, Tb4b4b4{
Te6edf3nameTff7b72: Te6edf3nameTb4b4b4,
Te6edf3remote_identity_hashTff7b72: Te6edf3hashTb4b4b4,
Te6edf3lxmf_addressTff7b72: Te6edf3lxmf_addressTb4b4b4,
Te6edf3lxst_addressTff7b72: Te6edf3lxst_addressTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Ta5d6ff`Ta5d6ffAdded Tffd700${Te6edf3nameTffd700}Ta5d6ff to contactsTa5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.failed_add_contact"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3ingestPaperMessageTb4b4b4(Te6edf3uriTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Te6edf3WebSocketConnectionTb4b4b4.Te6edf3sendTb4b4b4(
Tffa657JSONTb4b4b4.Te6edf3stringifyTb4b4b4(Tb4b4b4{
Te6edf3typeTff7b72: Ta5d6ff"lxm.ingest_uri"Tb4b4b4,
Te6edf3uriTff7b72: Te6edf3uriTb4b4b4,
Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3infoTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.ingesting_paper_message"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.failed_ingest_paper"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3generatePaperMessageFromCompositionTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3canSendMessageTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isGeneratingPaperMessage Tff7b72= Tff7b72trueTb4b4b4;
Te6edf3WebSocketConnectionTb4b4b4.Te6edf3sendTb4b4b4(
Tffa657JSONTb4b4b4.Te6edf3stringifyTb4b4b4(Tb4b4b4{
Te6edf3typeTff7b72: Ta5d6ff"lxm.generate_paper_uri"Tb4b4b4,
Te6edf3destination_hashTff7b72: Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4,
Te6edf3contentTff7b72: Tff7b72thisTb4b4b4.Te6edf3newMessageTextTb4b4b4,
Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3onWebsocketMessageTb4b4b4(Te6edf3messageTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3json Tff7b72= Tffa657JSONTb4b4b4.Te6edf3parseTb4b4b4(Te6edf3messageTb4b4b4.Te6edf3dataTb4b4b4)Tb4b4b4;
Tff7b72switch Tb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3typeTb4b4b4) Tb4b4b4{
Tff7b72case Ta5d6ff"announce"Tff7b72: Tb4b4b4{
T8b949e// update stamp info and signal metrics if an announce is received from the selected peer
Tff7b72if Tb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3announceTb4b4b4.Te6edf3destination_hash Tff7b72=== Tff7b72thisTb4b4b4.Te6edf3selectedPeerTff7b72?Tb4b4b4.Te6edf3destination_hashTb4b4b4) Tb4b4b4{
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3getPeerPathTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3getPeerLxmfStampInfoTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3getPeerSignalMetricsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72breakTb4b4b4;
Tb4b4b4}
Tff7b72case Ta5d6ff"lxmf.delivery"Tff7b72: Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3onLxmfMessageReceivedTb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3lxmf_messageTb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3getPeerPathTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3getPeerSignalMetricsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72breakTb4b4b4;
Tb4b4b4}
Tff7b72case Ta5d6ff"lxmf_message_created"Tff7b72: Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3onLxmfMessageCreatedTb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3lxmf_messageTb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3getPeerPathTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72breakTb4b4b4;
Tb4b4b4}
Tff7b72case Ta5d6ff"lxmf_message_state_updated"Tff7b72: Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3onLxmfMessageUpdatedTb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3lxmf_messageTb4b4b4)Tb4b4b4;
Tff7b72breakTb4b4b4;
Tb4b4b4}
Tff7b72case Ta5d6ff"lxmf_message_deleted"Tff7b72: Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3onLxmfMessageDeletedTb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3hashTb4b4b4)Tb4b4b4;
Tff7b72breakTb4b4b4;
Tb4b4b4}
Tff7b72case Ta5d6ff"lxm.generate_paper_uri.result"Tff7b72: Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isGeneratingPaperMessage Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3status Tff7b72=== Ta5d6ff"success"Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3generatedPaperMessageUri Tff7b72= Te6edf3jsonTb4b4b4.Te6edf3uriTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isPaperMessageResultModalOpen Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3messageTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72breakTb4b4b4;
Tb4b4b4}
Tff7b72case Ta5d6ff"lxm.ingest_uri.result"Tff7b72: Tb4b4b4{
T8b949e// Handled in App.vue or MessagesPage.vue
Tff7b72breakTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3openLXMFAddressTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3GlobalEmitterTb4b4b4.Te6edf3emitTb4b4b4(Ta5d6ff"compose-new-message"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onComposeNewMessageEventTb4b4b4(Te6edf3destinationHashTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedPeer Tff7b72&& Tff7b72!Te6edf3destinationHashTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3composeInput Tff7b72= Tffa657documentTb4b4b4.Te6edf3getElementByIdTb4b4b4(Ta5d6ff"compose-input"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3composeInputTb4b4b4) Tb4b4b4{
Te6edf3composeInputTb4b4b4.Te6edf3focusTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3onComposeSubmitTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3composeAddress Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3composeAddressTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72=== Ta5d6ff""Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72let Te6edf3destinationHash Tff7b72= Tff7b72thisTb4b4b4.Te6edf3composeAddressTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3composeAddress Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3handleComposeAddressTb4b4b4(Te6edf3destinationHashTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onComposeEnterPressedTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(
Tff7b72thisTb4b4b4.Te6edf3selectedComposeSuggestionIndex Tff7b72>= T79c0ff0 Tff7b72&&
Tff7b72thisTb4b4b4.Te6edf3selectedComposeSuggestionIndex Tff7b72< Tff7b72thisTb4b4b4.Te6edf3composeSuggestionsTb4b4b4.Te6edf3length
Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3suggestion Tff7b72= Tff7b72thisTb4b4b4.Te6edf3composeSuggestionsTb4b4b4[Tff7b72thisTb4b4b4.Te6edf3selectedComposeSuggestionIndexTb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3selectComposeSuggestionTb4b4b4(Te6edf3suggestionTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3onComposeSubmitTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3handleComposeInputUpTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3composeSuggestionsTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectedComposeSuggestionIndex Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3selectedComposeSuggestionIndexTff7b72--Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3selectedComposeSuggestionIndex Tff7b72= Tff7b72thisTb4b4b4.Te6edf3composeSuggestionsTb4b4b4.Te6edf3length Tff7b72- T79c0ff1Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3handleComposeInputDownTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3composeSuggestionsTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectedComposeSuggestionIndex Tff7b72< Tff7b72thisTb4b4b4.Te6edf3composeSuggestionsTb4b4b4.Te6edf3length Tff7b72- T79c0ff1Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3selectedComposeSuggestionIndexTff7b72++Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3selectedComposeSuggestionIndex Tff7b72= T79c0ff0Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3selectComposeSuggestionTb4b4b4(Te6edf3suggestionTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3composeAddress Tff7b72= Te6edf3suggestionTb4b4b4.Te6edf3hashTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isComposeInputFocused Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3selectedComposeSuggestionIndex Tff7b72= Tff7b72-T79c0ff1Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3onComposeSubmitTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onComposeInputBlurTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// Delay blur to allow mousedown on suggestions
Te6edf3setTimeoutTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isComposeInputFocused Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3selectedComposeSuggestionIndex Tff7b72= Tff7b72-T79c0ff1Tb4b4b4;
Tb4b4b4}Tb4b4b4, T79c0ff200Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3handleComposeAddressTb4b4b4(Te6edf3destinationHashTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3destinationHashTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"lxmf@"Tb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3destinationHash Tff7b72= Te6edf3destinationHashTb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff"lxmf@"Tb4b4b4, Ta5d6ff""Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3destinationHashTb4b4b4.Te6edf3length Tff7b72!== T79c0ff32Tb4b4b4) Tb4b4b4{
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"common.invalid_address"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Te6edf3GlobalEmitterTb4b4b4.Te6edf3emitTb4b4b4(Ta5d6ff"compose-new-message"Tb4b4b4, Te6edf3destinationHashTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3normalizeLxmfMessageTb4b4b4(Te6edf3msgTb4b4b4, Te6edf3isOutboundTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3normalized Tff7b72= Tb4b4b4{ Tb4b4b4...Te6edf3msg Tb4b4b4}Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3normalizedTb4b4b4.Te6edf3created_at Tff7b72&& Te6edf3normalizedTb4b4b4.Te6edf3timestampTb4b4b4) Tb4b4b4{
Te6edf3normalizedTb4b4b4.Te6edf3created_at Tff7b72= Tff7b72new Tffa657DateTb4b4b4(Te6edf3normalizedTb4b4b4.Te6edf3timestamp Tff7b72* T79c0ff1000Tb4b4b4)Tb4b4b4.Te6edf3toISOStringTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3isOutbound Tff7b72&& Te6edf3normalizedTb4b4b4.Te6edf3state Tff7b72=== Ta5d6ff"unknown"Tb4b4b4) Tb4b4b4{
Te6edf3normalizedTb4b4b4.Te6edf3state Tff7b72= Ta5d6ff"outbound"Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3normalizedTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onLxmfMessageReceivedTb4b4b4(Te6edf3lxmfMessageTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3source_hash Tff7b72!== Tff7b72thisTb4b4b4.Te6edf3selectedPeerTff7b72?Tb4b4b4.Te6edf3destination_hashTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3is_reaction Tff7b72&& Te6edf3lxmfMessageTb4b4b4.Te6edf3reaction_toTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3applyIncomingReactionTb4b4b4(Te6edf3lxmfMessageTb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3chatItemsTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3typeTff7b72: Ta5d6ff"lxmf_message"Tb4b4b4,
Te6edf3is_outboundTff7b72: Tff7b72falseTb4b4b4,
Te6edf3lxmf_messageTff7b72: Tff7b72thisTb4b4b4.Te6edf3normalizeLxmfMessageTb4b4b4(Te6edf3lxmfMessageTb4b4b4, Tff7b72falseTb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3conversation Tff7b72= Tff7b72thisTb4b4b4.Te6edf3findConversationTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3conversationTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3markConversationAsReadTb4b4b4(Te6edf3conversationTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3autoScrollOnNewMessageTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3scrollMessagesToBottomTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3autoLoadAudioAttachmentsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onLxmfMessageCreatedTb4b4b4(Te6edf3lxmfMessageTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3destination_hash Tff7b72!== Tff7b72thisTb4b4b4.Te6edf3selectedPeerTff7b72?Tb4b4b4.Te6edf3destination_hashTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3removeFirstPendingOutboundPlaceholderForPeerTb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3destination_hashTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isLxmfMessageInUiTb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3hashTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3chatItemsTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3typeTff7b72: Ta5d6ff"lxmf_message"Tb4b4b4,
Te6edf3lxmf_messageTff7b72: Tff7b72thisTb4b4b4.Te6edf3normalizeLxmfMessageTb4b4b4(Te6edf3lxmfMessageTb4b4b4, Tff7b72trueTb4b4b4)Tb4b4b4,
Te6edf3is_outboundTff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3autoLoadAudioAttachmentsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onLxmfMessageUpdatedTb4b4b4(Te6edf3lxmfMessageTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3lxmfMessageHash Tff7b72= Te6edf3lxmfMessageTb4b4b4.Te6edf3hashTb4b4b4;
Tff7b72const Te6edf3chatItemIndex Tff7b72= Tff7b72thisTb4b4b4.Te6edf3chatItemsTb4b4b4.Te6edf3findIndexTb4b4b4(
Tb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4=> Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTff7b72?Tb4b4b4.Te6edf3hash Tff7b72=== Te6edf3lxmfMessageHash
Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3chatItemIndex Tff7b72=== Tff7b72-T79c0ff1Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3chatItemsTb4b4b4[Te6edf3chatItemIndexTb4b4b4]Tb4b4b4.Te6edf3lxmf_message Tff7b72= Tb4b4b4{
Tb4b4b4...Tff7b72thisTb4b4b4.Te6edf3chatItemsTb4b4b4[Te6edf3chatItemIndexTb4b4b4]Tb4b4b4.Te6edf3lxmf_messageTb4b4b4,
Tb4b4b4...Te6edf3lxmfMessageTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onLxmfMessageDeletedTb4b4b4(Te6edf3hashTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3hashTb4b4b4) Tb4b4b4{
T8b949e// remove existing chat item by lxmf message hash
Tff7b72thisTb4b4b4.Te6edf3chatItems Tff7b72= Tff7b72thisTb4b4b4.Te6edf3chatItemsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3itemTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72return Te6edf3itemTb4b4b4.Te6edf3lxmf_messageTff7b72?Tb4b4b4.Te6edf3hash Tff7b72!== Te6edf3hashTb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3getPeerPathTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
T8b949e// get path to destination
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(
Ta5d6ff`Ta5d6ff/api/v1/destination/Tffd700${Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTffd700}Ta5d6ff/pathTa5d6ff`
Tb4b4b4)Tb4b4b4;
T8b949e// update ui
Tff7b72thisTb4b4b4.Te6edf3selectedPeerPath Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3pathTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
T8b949e// clear previous known path
Tff7b72thisTb4b4b4.Te6edf3selectedPeerPath Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3getPeerLxmfStampInfoTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
T8b949e// get lxmf stamp info
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(
Ta5d6ff`Ta5d6ff/api/v1/destination/Tffd700${Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTffd700}Ta5d6ff/lxmf-stamp-infoTa5d6ff`
Tb4b4b4)Tb4b4b4;
T8b949e// update ui
Tff7b72thisTb4b4b4.Te6edf3selectedPeerLxmfStampInfo Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3lxmf_stamp_infoTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
T8b949e// clear previous stamp info
Tff7b72thisTb4b4b4.Te6edf3selectedPeerLxmfStampInfo Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3getPeerSignalMetricsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
T8b949e// get signal metrics
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(
Ta5d6ff`Ta5d6ff/api/v1/destination/Tffd700${Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTffd700}Ta5d6ff/signal-metricsTa5d6ff`
Tb4b4b4)Tb4b4b4;
T8b949e// update ui
Tff7b72thisTb4b4b4.Te6edf3selectedPeerSignalMetrics Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3signal_metricsTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
T8b949e// clear previous signal metrics
Tff7b72thisTb4b4b4.Te6edf3selectedPeerSignalMetrics Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3onDestinationPathClickTb4b4b4(Te6edf3pathTb4b4b4) Tb4b4b4{
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Ta5d6ff`Tffd700${Te6edf3pathTb4b4b4.Te6edf3hopsTffd700}Ta5d6ff Tffd700${Te6edf3pathTb4b4b4.Te6edf3hops Tff7b72=== T79c0ff1 Tff7b72? Ta5d6ff"hop" Tff7b72: Ta5d6ff"hops"Tffd700}Ta5d6ff away via Tffd700${Te6edf3pathTb4b4b4.Te6edf3next_hop_interfaceTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onStampInfoClickTb4b4b4(Te6edf3stampInfoTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3stampCost Tff7b72= Te6edf3stampInfoTb4b4b4.Te6edf3stamp_costTb4b4b4;
Tff7b72const Te6edf3outboundTicketExpiry Tff7b72= Te6edf3stampInfoTb4b4b4.Te6edf3outbound_ticket_expiryTb4b4b4;
T8b949e// determine estimated time to generate a stamp
Tff7b72var Te6edf3estimatedTimeForStamp Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3stampCost Tff7b72>= T79c0ff24Tb4b4b4) Tb4b4b4{
Te6edf3estimatedTimeForStamp Tff7b72= Ta5d6ff"several hours"Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3stampCost Tff7b72>= T79c0ff20Tb4b4b4) Tb4b4b4{
Te6edf3estimatedTimeForStamp Tff7b72= Ta5d6ff"more than an hour"Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3stampCost Tff7b72>= T79c0ff18Tb4b4b4) Tb4b4b4{
Te6edf3estimatedTimeForStamp Tff7b72= Ta5d6ff"~5 minutes"Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3stampCost Tff7b72>= T79c0ff17Tb4b4b4) Tb4b4b4{
Te6edf3estimatedTimeForStamp Tff7b72= Ta5d6ff"a few minutes"Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3stampCost Tff7b72>= T79c0ff16Tb4b4b4) Tb4b4b4{
Te6edf3estimatedTimeForStamp Tff7b72= Ta5d6ff"~1 minute"Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3stampCost Tff7b72>= T79c0ff13Tb4b4b4) Tb4b4b4{
Te6edf3estimatedTimeForStamp Tff7b72= Ta5d6ff"~30 seconds"Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3stampCost Tff7b72>= T79c0ff9Tb4b4b4) Tb4b4b4{
Te6edf3estimatedTimeForStamp Tff7b72= Ta5d6ff"~10 seconds"Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3stampCost Tff7b72>= T79c0ff1Tb4b4b4) Tb4b4b4{
Te6edf3estimatedTimeForStamp Tff7b72= Ta5d6ff"a few seconds"Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3estimatedTimeForStamp Tff7b72= Ta5d6ff"0 seconds"Tb4b4b4;
Tb4b4b4}
T8b949e// check if we have an outbound ticket available
Tff7b72if Tb4b4b4(Te6edf3outboundTicketExpiry Tff7b72!= Tff7b72nullTb4b4b4) Tb4b4b4{
Te6edf3estimatedTimeForStamp Tff7b72= Ta5d6ff`Ta5d6ffinstant (ticket expires Tffd700${Te6edf3dayjsTb4b4b4(Te6edf3outboundTicketExpiry Tff7b72* T79c0ff1000Tb4b4b4)Tb4b4b4.Te6edf3fromNowTb4b4b4(Tb4b4b4)Tffd700}Ta5d6ff)Ta5d6ff`Tb4b4b4;
Tb4b4b4}
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(
Ta5d6ff`Ta5d6ffThis peer has enabled stamp security.Ta5d6ff\nTa5d6ff\nTa5d6ffYour device must have a ticket, or solve an automated proof of work task each time you send them a message.Ta5d6ff\nTa5d6ff\nTa5d6ffTime per message: Tffd700${Te6edf3estimatedTimeForStampTffd700}Ta5d6ff`
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onSignalMetricsClickTb4b4b4(Te6edf3signalMetricsTb4b4b4) Tb4b4b4{
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(
Tb4b4b4[
Ta5d6ff`Ta5d6ffSignal Quality: Tffd700${Te6edf3signalMetricsTb4b4b4.Te6edf3quality Tff7b72?? Ta5d6ff"???"Tffd700}Ta5d6ff%Ta5d6ff`Tb4b4b4,
Ta5d6ff`Ta5d6ffRSSI: Tffd700${Te6edf3signalMetricsTb4b4b4.Te6edf3rssi Tff7b72?? Ta5d6ff"???"Tffd700}Ta5d6ffdBmTa5d6ff`Tb4b4b4,
Ta5d6ff`Ta5d6ffSNR: Tffd700${Te6edf3signalMetricsTb4b4b4.Te6edf3snr Tff7b72?? Ta5d6ff"???"Tffd700}Ta5d6ffdBTa5d6ff`Tb4b4b4,
Tb4b4b4]Tb4b4b4.Te6edf3joinTb4b4b4(Ta5d6ff"\n"Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3scrollMessagesToBottomTff7b72: Tff7b72function Tb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3scrollBottomGen Tff7b72+= T79c0ff1Tb4b4b4;
Tff7b72const Te6edf3gen Tff7b72= Tff7b72thisTb4b4b4.Te6edf3scrollBottomGenTb4b4b4;
Tff7b72const Te6edf3stale Tff7b72= Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3gen Tff7b72!== Tff7b72thisTb4b4b4.Te6edf3scrollBottomGenTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3staleTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3staleTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3container Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3messagesScrollTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3containerTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3messagesViewportReady Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3pump Tff7b72= Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3useVirtualMessageList Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3messageListVirtualTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3messageListVirtualTb4b4b4.Te6edf3scrollToBottomTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3scrollContainerToBottomTb4b4b4(Te6edf3containerTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4;
Te6edf3pumpTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3useVirtualMessageListTb4b4b4) Tb4b4b4{
Te6edf3requestAnimationFrameTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3staleTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72returnTb4b4b4;
Te6edf3pumpTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3messagesViewportReady Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72let Te6edf3passes Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72const Te6edf3settle Tff7b72= Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3staleTb4b4b4(Tb4b4b4)Tb4b4b4) Tff7b72returnTb4b4b4;
Te6edf3pumpTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3passesTff7b72++Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3isNearBottomTb4b4b4(Te6edf3containerTb4b4b4) Tff7b72|| Te6edf3passes Tff7b72>= T79c0ff6Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3messagesViewportReady Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3requestAnimationFrameTb4b4b4(Te6edf3settleTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4;
Te6edf3requestAnimationFrameTb4b4b4(Te6edf3settleTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3isLxmfMessageInUiTff7b72: Tff7b72function Tb4b4b4(Te6edf3hashTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3chatItemsTb4b4b4.Te6edf3findIndexTb4b4b4(Tb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4=> Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTff7b72?Tb4b4b4.Te6edf3hash Tff7b72=== Te6edf3hashTb4b4b4) Tff7b72!== Tff7b72-T79c0ff1Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3getCustomDisplayNameTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
T8b949e// get custom display name
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(
Ta5d6ff`Ta5d6ff/api/v1/destination/Tffd700${Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTffd700}Ta5d6ff/custom-display-nameTa5d6ff`
Tb4b4b4)Tb4b4b4;
T8b949e// update ui
Tff7b72thisTb4b4b4.Te6edf3$emitTb4b4b4(Ta5d6ff"update:selectedPeer"Tb4b4b4, Tb4b4b4{
Tb4b4b4...Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4,
Te6edf3custom_display_nameTff7b72: Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3custom_display_nameTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3errorTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3errorTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3updateCustomDisplayNameTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3displayName Tff7b72= Tff7b72await Te6edf3DialogUtilsTb4b4b4.Te6edf3promptTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.enter_display_name"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3displayName Tff7b72== Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(
Ta5d6ff`Ta5d6ff/api/v1/destination/Tffd700${Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTffd700}Ta5d6ff/custom-display-name/updateTa5d6ff`Tb4b4b4,
Tb4b4b4{
Te6edf3display_nameTff7b72: Te6edf3displayNameTb4b4b4,
Tb4b4b4}
Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3displayNameTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3checkResp Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(
Ta5d6ff`Ta5d6ff/api/v1/telephone/contacts/check/Tffd700${Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTffd700}Ta5d6ff`
Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3contactId Tff7b72= Te6edf3checkRespTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3contactTff7b72?Tb4b4b4.Te6edf3idTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3contactIdTb4b4b4) Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3patchTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/telephone/contacts/Tffd700${Te6edf3contactIdTffd700}Ta5d6ff`Tb4b4b4, Tb4b4b4{ Te6edf3nameTff7b72: Te6edf3displayName Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4{
T8b949e// non-critical
Tb4b4b4}
Tb4b4b4}
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3getCustomDisplayNameTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3$emitTb4b4b4(Ta5d6ff"reload-conversations"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3errorTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3errorTb4b4b4)Tb4b4b4;
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.failed_update_display_name"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3onConversationDeletedTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3$emitTb4b4b4(Ta5d6ff"reload-conversations"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3$emitTb4b4b4(Ta5d6ff"close"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3onBanishHeaderClickTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72if Tb4b4b4(
Tff7b72!Tb4b4b4(Tff7b72await Te6edf3DialogUtilsTb4b4b4.Te6edf3confirmTb4b4b4(
Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.banish_confirm"Tb4b4b4) Tff7b72||
Ta5d6ff"Are you sure you want to banish this user? They will not be able to send you messages or establish links."
Tb4b4b4)Tb4b4b4)
Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/blocked-destinations"Tb4b4b4, Tb4b4b4{
Te6edf3destination_hashTff7b72: Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3GlobalEmitterTb4b4b4.Te6edf3emitTb4b4b4(Ta5d6ff"block-status-changed"Tb4b4b4)Tb4b4b4;
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.user_banished"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.failed_banish_user"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3liftBanishmentFromMessageMenuTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedPeerTff7b72?Tb4b4b4.Te6edf3destination_hashTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3messageContextMenuTb4b4b4.Te6edf3show Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Tff7b72deleteTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/blocked-destinations/Tffd700${Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Te6edf3GlobalEmitterTb4b4b4.Te6edf3emitTb4b4b4(Ta5d6ff"block-status-changed"Tb4b4b4)Tb4b4b4;
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"banishment.banishment_lifted"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"banishment.failed_lift_banishment"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3messageContextMenuTb4b4b4.Te6edf3show Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onChatItemClickTff7b72: Tff7b72function Tb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3chatItemTb4b4b4.Te6edf3is_actions_expandedTb4b4b4) Tb4b4b4{
Te6edf3chatItemTb4b4b4.Te6edf3is_actions_expanded Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3chatItemTb4b4b4.Te6edf3is_actions_expanded Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3copyableMessagePlainTextTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3raw Tff7b72= Te6edf3chatItemTff7b72?Tb4b4b4.Te6edf3lxmf_messageTff7b72?Tb4b4b4.Te6edf3contentTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72typeof Te6edf3raw Tff7b72!== Ta5d6ff"string"Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff""Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3t Tff7b72= Te6edf3rawTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3tTb4b4b4.Te6edf3length Tff7b72> T79c0ff0 Tff7b72? Te6edf3t Tff7b72: Ta5d6ff""Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3copyMessageFromContextMenuTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3text Tff7b72= Tff7b72thisTb4b4b4.Te6edf3copyableMessagePlainTextTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3textTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72await Te6edf3navigatorTb4b4b4.Te6edf3clipboardTb4b4b4.Te6edf3writeTextTb4b4b4(Te6edf3textTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.message_copied"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3messageContextMenuTb4b4b4.Te6edf3show Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.failed_copy_message"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3replyToMessageTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3replyingTo Tff7b72= Te6edf3chatItemTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3messageContextMenuTb4b4b4.Te6edf3show Tff7b72= Tff7b72falseTb4b4b4;
Te6edf3chatItemTb4b4b4.Te6edf3is_actions_expanded Tff7b72= Tff7b72falseTb4b4b4;
T8b949e// focus the input
Tff7b72thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3textarea Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4[Ta5d6ff"message-input"Tb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3textareaTb4b4b4) Tb4b4b4{
Te6edf3textareaTb4b4b4.Te6edf3focusTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3cancelReplyTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3replyingTo Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3scrollToMessageTb4b4b4(Te6edf3hashTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3index Tff7b72= Tff7b72thisTb4b4b4.Te6edf3chatItemsTb4b4b4.Te6edf3findIndexTb4b4b4(Tb4b4b4(Te6edf3itemTb4b4b4) Tb4b4b4=> Te6edf3itemTb4b4b4.Te6edf3lxmf_messageTff7b72?Tb4b4b4.Te6edf3hash Tff7b72=== Te6edf3hashTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3index Tff7b72=== Tff7b72-T79c0ff1Tb4b4b4) Tb4b4b4{
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.message_not_found_in_cache"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3el Tff7b72= Tffa657documentTb4b4b4.Te6edf3getElementByIdTb4b4b4(Ta5d6ff`Ta5d6ffmessage-Tffd700${Te6edf3hashTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3elTb4b4b4) Tb4b4b4{
Te6edf3elTb4b4b4.Te6edf3scrollIntoViewTb4b4b4(Tb4b4b4{ Te6edf3behaviorTff7b72: Ta5d6ff"smooth"Tb4b4b4, Te6edf3blockTff7b72: Ta5d6ff"center" Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3elTb4b4b4.Te6edf3classListTb4b4b4.Te6edf3addTb4b4b4(Ta5d6ff"ring-2"Tb4b4b4, Ta5d6ff"ring-blue-500"Tb4b4b4, Ta5d6ff"ring-offset-2"Tb4b4b4)Tb4b4b4;
Te6edf3setTimeoutTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3elTb4b4b4.Te6edf3classListTb4b4b4.Te6edf3removeTb4b4b4(Ta5d6ff"ring-2"Tb4b4b4, Ta5d6ff"ring-blue-500"Tb4b4b4, Ta5d6ff"ring-offset-2"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4, T79c0ff2000Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3useVirtualMessageList Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3messageListVirtualTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3messageListVirtualTb4b4b4.Te6edf3scrollToMessageHashTb4b4b4(Te6edf3hashTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3requestAnimationFrameTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3el2 Tff7b72= Tffa657documentTb4b4b4.Te6edf3getElementByIdTb4b4b4(Ta5d6ff`Ta5d6ffmessage-Tffd700${Te6edf3hashTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3el2Tb4b4b4) Tb4b4b4{
Te6edf3el2Tb4b4b4.Te6edf3classListTb4b4b4.Te6edf3addTb4b4b4(Ta5d6ff"ring-2"Tb4b4b4, Ta5d6ff"ring-blue-500"Tb4b4b4, Ta5d6ff"ring-offset-2"Tb4b4b4)Tb4b4b4;
Te6edf3setTimeoutTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3el2Tb4b4b4.Te6edf3classListTb4b4b4.Te6edf3removeTb4b4b4(Ta5d6ff"ring-2"Tb4b4b4, Ta5d6ff"ring-blue-500"Tb4b4b4, Ta5d6ff"ring-offset-2"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4, T79c0ff2000Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.message_not_found_in_cache"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3getRepliedMessageTb4b4b4(Te6edf3hashTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3item Tff7b72= Tff7b72thisTb4b4b4.Te6edf3chatItemsTb4b4b4.Te6edf3findTb4b4b4(Tb4b4b4(Te6edf3iTb4b4b4) Tb4b4b4=> Te6edf3iTb4b4b4.Te6edf3lxmf_messageTff7b72?Tb4b4b4.Te6edf3hash Tff7b72=== Te6edf3hashTb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3item Tff7b72? Te6edf3itemTb4b4b4.Te6edf3lxmf_message Tff7b72: Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3reactionReactorLabelTb4b4b4(Te6edf3senderHexTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3senderHex Tff7b72|| Tff7b72typeof Te6edf3senderHex Tff7b72!== Ta5d6ff"string"Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff""Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3hex Tff7b72= Te6edf3senderHexTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3myLxmfAddressHash Tff7b72&& Te6edf3hex Tff7b72=== Tffa657StringTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3myLxmfAddressHashTb4b4b4)Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.reaction_you"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(
Tff7b72thisTb4b4b4.Te6edf3selectedPeerTff7b72?Tb4b4b4.Te6edf3destination_hash Tff7b72&&
Te6edf3hex Tff7b72=== Tffa657StringTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4)Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)
Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4(
Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3custom_display_name Tff7b72??
Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3display_name Tff7b72??
Tff7b72thisTb4b4b4.Te6edf3formatDestinationHashTb4b4b4(Te6edf3hexTb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3conv Tff7b72= Tff7b72thisTb4b4b4.Te6edf3conversationsTb4b4b4.Te6edf3findTb4b4b4(
Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4.Te6edf3destination_hash Tff7b72&& Tffa657StringTb4b4b4(Te6edf3cTb4b4b4.Te6edf3destination_hashTb4b4b4)Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4) Tff7b72=== Te6edf3hex
Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3convTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3convTb4b4b4.Te6edf3custom_display_name Tff7b72?? Te6edf3convTb4b4b4.Te6edf3display_name Tff7b72?? Tff7b72thisTb4b4b4.Te6edf3formatDestinationHashTb4b4b4(Te6edf3hexTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3formatDestinationHashTb4b4b4(Te6edf3hexTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3applyIncomingReactionTb4b4b4(Te6edf3lxmfMessageTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3target Tff7b72= Tff7b72thisTb4b4b4.Te6edf3chatItemsTb4b4b4.Te6edf3findTb4b4b4(Tb4b4b4(Te6edf3iTb4b4b4) Tb4b4b4=> Te6edf3iTb4b4b4.Te6edf3lxmf_messageTff7b72?Tb4b4b4.Te6edf3hash Tff7b72=== Te6edf3lxmfMessageTb4b4b4.Te6edf3reaction_toTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3target Tff7b72|| Tff7b72!Te6edf3targetTb4b4b4.Te6edf3lxmf_messageTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3targetTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3reactionsTb4b4b4) Tb4b4b4{
Te6edf3targetTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3reactions Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3sender Tff7b72= Te6edf3lxmfMessageTb4b4b4.Te6edf3reaction_sender Tff7b72|| Te6edf3lxmfMessageTb4b4b4.Te6edf3source_hash Tff7b72|| Ta5d6ff""Tb4b4b4;
Tff7b72const Te6edf3emoji Tff7b72= Te6edf3lxmfMessageTb4b4b4.Te6edf3reaction_emoji Tff7b72|| Ta5d6ff""Tb4b4b4;
Tff7b72const Te6edf3dup Tff7b72= Te6edf3targetTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3reactionsTb4b4b4.Te6edf3someTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3rTb4b4b4.Te6edf3sender Tff7b72=== Te6edf3sender Tff7b72&& Te6edf3rTb4b4b4.Te6edf3emoji Tff7b72=== Te6edf3emojiTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3dupTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Te6edf3targetTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3reactionsTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3emojiTb4b4b4,
Te6edf3senderTb4b4b4,
Te6edf3reactionHashTff7b72: Te6edf3lxmfMessageTb4b4b4.Te6edf3hashTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3openReactionPickerTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3reactionPickerPos Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3reactionPickerChatItem Tff7b72= Te6edf3chatItemTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3closeReactionPickerTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3reactionPickerChatItem Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3reactionPickerPos Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3reactionDragState Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onReactionPickerDragStartTb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3evt Tff7b72= Te6edf3eTb4b4b4.Te6edf3touches Tff7b72? Te6edf3eTb4b4b4.Te6edf3touchesTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72: Te6edf3eTb4b4b4;
Tff7b72const Te6edf3panel Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3reactionPickerPanelTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3panelTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3rect Tff7b72= Te6edf3panelTb4b4b4.Te6edf3getBoundingClientRectTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3reactionDragState Tff7b72= Tb4b4b4{
Te6edf3startXTff7b72: Te6edf3evtTb4b4b4.Te6edf3clientXTb4b4b4,
Te6edf3startYTff7b72: Te6edf3evtTb4b4b4.Te6edf3clientYTb4b4b4,
Te6edf3originXTff7b72: Te6edf3rectTb4b4b4.Te6edf3leftTb4b4b4,
Te6edf3originYTff7b72: Te6edf3rectTb4b4b4.Te6edf3topTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72const Te6edf3onMove Tff7b72= Tb4b4b4(Te6edf3meTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3mv Tff7b72= Te6edf3meTb4b4b4.Te6edf3touches Tff7b72? Te6edf3meTb4b4b4.Te6edf3touchesTb4b4b4[T79c0ff0Tb4b4b4] Tff7b72: Te6edf3meTb4b4b4;
Tff7b72const Te6edf3dx Tff7b72= Te6edf3mvTb4b4b4.Te6edf3clientX Tff7b72- Tff7b72thisTb4b4b4.Te6edf3reactionDragStateTb4b4b4.Te6edf3startXTb4b4b4;
Tff7b72const Te6edf3dy Tff7b72= Te6edf3mvTb4b4b4.Te6edf3clientY Tff7b72- Tff7b72thisTb4b4b4.Te6edf3reactionDragStateTb4b4b4.Te6edf3startYTb4b4b4;
Tff7b72const Te6edf3panelEl Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3reactionPickerPanelTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3panelElTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3pr Tff7b72= Te6edf3panelElTb4b4b4.Te6edf3getBoundingClientRectTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3nx Tff7b72= Tff7b72thisTb4b4b4.Te6edf3reactionDragStateTb4b4b4.Te6edf3originX Tff7b72+ Te6edf3dxTb4b4b4;
Tff7b72const Te6edf3ny Tff7b72= Tff7b72thisTb4b4b4.Te6edf3reactionDragStateTb4b4b4.Te6edf3originY Tff7b72+ Te6edf3dyTb4b4b4;
Tff7b72const Tb4b4b4{ Te6edf3leftTb4b4b4, Te6edf3top Tb4b4b4} Tff7b72= Te6edf3clampFloatingToViewportTb4b4b4(Te6edf3nxTb4b4b4, Te6edf3nyTb4b4b4, Te6edf3prTb4b4b4.Te6edf3widthTb4b4b4, Te6edf3prTb4b4b4.Te6edf3heightTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3reactionPickerPos Tff7b72= Tb4b4b4{ Te6edf3xTff7b72: Te6edf3leftTb4b4b4, Te6edf3yTff7b72: Te6edf3top Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4;
Tff7b72const Te6edf3onUp Tff7b72= Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tffa657documentTb4b4b4.Te6edf3removeEventListenerTb4b4b4(Ta5d6ff"mousemove"Tb4b4b4, Te6edf3onMoveTb4b4b4)Tb4b4b4;
Tffa657documentTb4b4b4.Te6edf3removeEventListenerTb4b4b4(Ta5d6ff"mouseup"Tb4b4b4, Te6edf3onUpTb4b4b4)Tb4b4b4;
Tffa657documentTb4b4b4.Te6edf3removeEventListenerTb4b4b4(Ta5d6ff"touchmove"Tb4b4b4, Te6edf3onMoveTb4b4b4)Tb4b4b4;
Tffa657documentTb4b4b4.Te6edf3removeEventListenerTb4b4b4(Ta5d6ff"touchend"Tb4b4b4, Te6edf3onUpTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4;
Tffa657documentTb4b4b4.Te6edf3addEventListenerTb4b4b4(Ta5d6ff"mousemove"Tb4b4b4, Te6edf3onMoveTb4b4b4)Tb4b4b4;
Tffa657documentTb4b4b4.Te6edf3addEventListenerTb4b4b4(Ta5d6ff"mouseup"Tb4b4b4, Te6edf3onUpTb4b4b4)Tb4b4b4;
Tffa657documentTb4b4b4.Te6edf3addEventListenerTb4b4b4(Ta5d6ff"touchmove"Tb4b4b4, Te6edf3onMoveTb4b4b4, Tb4b4b4{ Te6edf3passiveTff7b72: Tff7b72false Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tffa657documentTb4b4b4.Te6edf3addEventListenerTb4b4b4(Ta5d6ff"touchend"Tb4b4b4, Te6edf3onUpTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onReactionPickerEmojiClickTb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3emoji Tff7b72= Te6edf3eventTb4b4b4.Te6edf3detailTff7b72?Tb4b4b4.Te6edf3unicodeTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3emoji Tff7b72|| Tff7b72!Tff7b72thisTb4b4b4.Te6edf3reactionPickerChatItemTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3chatItem Tff7b72= Tff7b72thisTb4b4b4.Te6edf3reactionPickerChatItemTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3reactionPickerChatItem Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3sendReactionEmojiFromMenuTb4b4b4(Te6edf3chatItemTb4b4b4, Te6edf3emojiTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3sendReactionEmojiFromMenuTb4b4b4(Te6edf3chatItemTb4b4b4, Te6edf3emojiTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3messageContextMenuTb4b4b4.Te6edf3show Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72const Te6edf3hash Tff7b72= Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTff7b72?Tb4b4b4.Te6edf3hashTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3hash Tff7b72|| Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedPeerTff7b72?Tb4b4b4.Te6edf3destination_hashTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/lxmf-messages/reactions"Tb4b4b4, Tb4b4b4{
Te6edf3destination_hashTff7b72: Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4,
Te6edf3target_message_hashTff7b72: Te6edf3hashTb4b4b4,
Te6edf3emojiTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3sender Tff7b72= Tff7b72thisTb4b4b4.Te6edf3myLxmfAddressHashTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3reactionsTb4b4b4) Tb4b4b4{
Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3reactions Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3dup Tff7b72= Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3reactionsTb4b4b4.Te6edf3someTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3rTb4b4b4.Te6edf3sender Tff7b72=== Te6edf3sender Tff7b72&& Te6edf3rTb4b4b4.Te6edf3emoji Tff7b72=== Te6edf3emojiTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3dupTb4b4b4) Tb4b4b4{
Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3reactionsTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3emojiTb4b4b4,
Te6edf3senderTb4b4b4,
Te6edf3reactionHashTff7b72: Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.reaction_send_failed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3onMessageContextMenuTb4b4b4(Te6edf3eventTb4b4b4, Te6edf3chatItemTb4b4b4, Te6edf3openedFromBubble Tff7b72= Tff7b72falseTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3messageContextMenuTb4b4b4.Te6edf3chatItem Tff7b72= Te6edf3chatItemTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3messageContextMenuTb4b4b4.Te6edf3openedFromBubble Tff7b72= Te6edf3openedFromBubbleTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3messageContextMenuTb4b4b4.Te6edf3justOpened Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3messageContextMenuTb4b4b4.Te6edf3show Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3menuWidth Tff7b72= T79c0ff200Tb4b4b4;
Tff7b72const Te6edf3menuHeight Tff7b72= T79c0ff280Tb4b4b4;
Tff7b72let Te6edf3x Tff7b72= Te6edf3eventTb4b4b4.Te6edf3clientXTb4b4b4;
Tff7b72let Te6edf3y Tff7b72= Te6edf3eventTb4b4b4.Te6edf3clientYTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3x Tff7b72+ Te6edf3menuWidth Tff7b72> Tffa657windowTb4b4b4.Te6edf3innerWidthTb4b4b4) Tb4b4b4{
Te6edf3x Tff7b72= Tffa657windowTb4b4b4.Te6edf3innerWidth Tff7b72- Te6edf3menuWidth Tff7b72- T79c0ff10Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3y Tff7b72+ Te6edf3menuHeight Tff7b72> Tffa657windowTb4b4b4.Te6edf3innerHeightTb4b4b4) Tb4b4b4{
Te6edf3y Tff7b72= Tffa657windowTb4b4b4.Te6edf3innerHeight Tff7b72- Te6edf3menuHeight Tff7b72- T79c0ff10Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3messageContextMenuTb4b4b4.Te6edf3x Tff7b72= Te6edf3xTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3messageContextMenuTb4b4b4.Te6edf3y Tff7b72= Te6edf3yTb4b4b4;
Te6edf3setTimeoutTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3messageContextMenuTb4b4b4.Te6edf3justOpened Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}Tb4b4b4, T79c0ff50Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3showRawMessageTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
T8b949e// we'll try to get the URI first as it contains the raw signed message
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/lxmf-messages/Tffd700${Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTffd700}Ta5d6ff/uriTa5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3rawMessageData Tff7b72= Tb4b4b4{
Tb4b4b4...Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4,
Te6edf3raw_uriTff7b72: Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3uriTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
T8b949e// if URI is not available (message no longer in router), we show what we have
Tff7b72thisTb4b4b4.Te6edf3rawMessageData Tff7b72= Tb4b4b4{ Tb4b4b4...Te6edf3chatItemTb4b4b4.Te6edf3lxmf_message Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3isRawMessageModalOpen Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3downloadAndDecodeAudioTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isDownloadingAudioTb4b4b4[Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4]Tb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isDownloadingAudioTb4b4b4[Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4] Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72try Tb4b4b4{
T8b949e// fetch audio bytes from api
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(
Ta5d6ff`Ta5d6ff/api/v1/lxmf-messages/attachment/Tffd700${Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTffd700}Ta5d6ff/audioTa5d6ff`Tb4b4b4,
Tb4b4b4{
Te6edf3responseTypeTff7b72: Ta5d6ff"arraybuffer"Tb4b4b4,
Tb4b4b4}
Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3audioBytes Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4; T8b949e// this will be an ArrayBuffer
T8b949e// ensure we have the bytes
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3audioBytesTb4b4b4) Tb4b4b4{
Tff7b72throw Tff7b72new Tf85149ErrorTb4b4b4(Ta5d6ff"No audio bytes received"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
T8b949e// decode audio to blob url
T8b949e// note: decodeLxmfAudioFieldToBlobUrl expects a field object with audio_mode and audio_bytes
Tff7b72const Te6edf3audioField Tff7b72= Tb4b4b4{
Te6edf3audio_modeTff7b72: Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3audioTb4b4b4.Te6edf3audio_modeTb4b4b4,
Te6edf3audio_bytesTff7b72: Te6edf3audioBytesTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72const Te6edf3objectUrl Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3decodeLxmfAudioFieldToBlobUrlTb4b4b4(Te6edf3audioFieldTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3objectUrlTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3lxmfMessageAudioAttachmentCacheTb4b4b4[Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4] Tff7b72= Te6edf3objectUrlTb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to download or decode audio:"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.failed_load_audio"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isDownloadingAudioTb4b4b4[Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4] Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3autoLoadAudioAttachmentsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3chatItem Tff7b72of Tff7b72thisTb4b4b4.Te6edf3chatItemsTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(
Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3audio Tff7b72&&
Tff7b72!Tff7b72thisTb4b4b4.Te6edf3lxmfMessageAudioAttachmentCacheTb4b4b4[Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4] Tff7b72&&
Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isDownloadingAudioTb4b4b4[Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4]
Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3downloadAndDecodeAudioTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3formatAttachmentSizeTb4b4b4(Te6edf3attachmentTb4b4b4, Te6edf3typeTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3attachmentTb4b4b4[Ta5d6ff`Tffd700${Te6edf3typeTffd700}Ta5d6ff_sizeTa5d6ff`Tb4b4b4] Tff7b72!== Tff7b72undefined Tff7b72&& Te6edf3attachmentTb4b4b4[Ta5d6ff`Tffd700${Te6edf3typeTffd700}Ta5d6ff_sizeTa5d6ff`Tb4b4b4] Tff7b72!== Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3formatBytesTb4b4b4(Te6edf3attachmentTb4b4b4[Ta5d6ff`Tffd700${Te6edf3typeTffd700}Ta5d6ff_sizeTa5d6ff`Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3attachmentTb4b4b4[Ta5d6ff`Tffd700${Te6edf3typeTffd700}Ta5d6ff_bytesTa5d6ff`Tb4b4b4]Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3formatBase64BytesTb4b4b4(Te6edf3attachmentTb4b4b4[Ta5d6ff`Tffd700${Te6edf3typeTffd700}Ta5d6ff_bytesTa5d6ff`Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Ta5d6ff"0 B"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3openImageTff7b72: Tff7b72async Tff7b72function Tb4b4b4(Te6edf3urlTb4b4b4, Te6edf3galleryUrlsTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3galleryUrls Tff7b72&& Te6edf3galleryUrlsTb4b4b4.Te6edf3length Tff7b72> T79c0ff1Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3imageModalGallery Tff7b72= Te6edf3galleryUrlsTb4b4b4.Te6edf3sliceTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72let Te6edf3idx Tff7b72= Te6edf3galleryUrlsTb4b4b4.Te6edf3indexOfTb4b4b4(Te6edf3urlTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3idx Tff7b72< T79c0ff0Tb4b4b4) Te6edf3idx Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3imageModalIndex Tff7b72= Te6edf3idxTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3imageModalUrl Tff7b72= Te6edf3galleryUrlsTb4b4b4[Te6edf3idxTb4b4b4]Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3imageModalGallery Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3imageModalIndex Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3imageModalUrl Tff7b72= Te6edf3urlTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3imageModalOverlayTff7b72?Tb4b4b4.Te6edf3focusTff7b72?Tb4b4b4.Tb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3closeImageModalTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3imageModalUrl Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3imageModalGallery Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3imageModalIndex Tff7b72= T79c0ff0Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3imageModalNavigateTb4b4b4(Te6edf3deltaTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3imageModalGallery Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3imageModalGalleryTb4b4b4.Te6edf3length Tff7b72< T79c0ff2Tb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3n Tff7b72= Tff7b72thisTb4b4b4.Te6edf3imageModalGalleryTb4b4b4.Te6edf3lengthTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3imageModalIndex Tff7b72= Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3imageModalIndex Tff7b72+ Te6edf3delta Tff7b72+ Te6edf3nTb4b4b4) Tff7b72% Te6edf3nTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3imageModalUrl Tff7b72= Tff7b72thisTb4b4b4.Te6edf3imageModalGalleryTb4b4b4[Tff7b72thisTb4b4b4.Te6edf3imageModalIndexTb4b4b4]Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3canMergeImageIntoImageStripTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3m Tff7b72= Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3mTb4b4b4.Te6edf3is_spamTb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Tb4b4b4[Ta5d6ff"cancelled"Tb4b4b4, Ta5d6ff"failed"Tb4b4b4, Ta5d6ff"rejected"Tb4b4b4]Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3mTb4b4b4.Te6edf3stateTb4b4b4)Tb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3mTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3imageTb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3mTb4b4b4.Te6edf3reply_to_hashTb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72const Te6edf3c Tff7b72= Tb4b4b4(Te6edf3mTb4b4b4.Te6edf3content Tff7b72|| Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3c Tff7b72&& Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isLikelyMultiImagePlaceholderCaptionTb4b4b4(Te6edf3cTb4b4b4)Tb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3mTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3audioTb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3mTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3file_attachmentsTff7b72?Tb4b4b4.Te6edf3lengthTb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3mTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3telemetryTb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3mTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3telemetry_streamTb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3mTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3commandsTff7b72?Tb4b4b4.Te6edf3lengthTb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3isLikelyMultiImagePlaceholderCaptionTb4b4b4(Te6edf3textTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3text Tff7b72|| Te6edf3textTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"\n"Tb4b4b4) Tff7b72|| Te6edf3textTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"\r"Tb4b4b4)Tb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3textTb4b4b4.Te6edf3length Tff7b72> T79c0ff240Tb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Ta5d6ff/[\\/]/Tb4b4b4.Te6edf3testTb4b4b4(Te6edf3textTb4b4b4)Tb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Ta5d6ff/[<>[\]{}]/Tb4b4b4.Te6edf3testTb4b4b4(Te6edf3textTb4b4b4)Tb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72return Ta5d6ff/^[\w.\- ()#@%&!+,;=']+\.(png|jpe?g|gif|webp|bmp|heif|heic|avif|svg|ico)$/iTb4b4b4.Te6edf3testTb4b4b4(Te6edf3textTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3shouldHideAutoImageCaptionTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3m Tff7b72= Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3mTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3imageTb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3isLikelyMultiImagePlaceholderCaptionTb4b4b4(Tb4b4b4(Te6edf3mTb4b4b4.Te6edf3content Tff7b72|| Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3imageGroupSortedChronTb4b4b4(Te6edf3itemsTb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4[Tb4b4b4...Te6edf3itemsTb4b4b4]Tb4b4b4.Te6edf3sortTb4b4b4(Tb4b4b4(Te6edf3aTb4b4b4, Te6edf3bTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3ta Tff7b72= Te6edf3aTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3timestamp Tff7b72?? T79c0ff0Tb4b4b4;
Tff7b72const Te6edf3tb Tff7b72= Te6edf3bTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3timestamp Tff7b72?? T79c0ff0Tb4b4b4;
Tff7b72return Te6edf3ta Tff7b72- Te6edf3tbTb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3lxmfImageUrlTb4b4b4(Te6edf3hashTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff`Ta5d6ff/api/v1/lxmf-messages/attachment/Tffd700${Te6edf3hashTffd700}Ta5d6ff/imageTa5d6ff`Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3pendingOutboundImageSrcTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3prev Tff7b72= Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTff7b72?Tb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3imageTff7b72?Tb4b4b4.Te6edf3_preview_urlTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3prevTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3prevTb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3lxmfImageUrlTb4b4b4(Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3removePendingOutboundPlaceholderTb4b4b4(Te6edf3hashTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3hashTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3chatItems Tff7b72= Tff7b72thisTb4b4b4.Te6edf3chatItemsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3itemTb4b4b4) Tb4b4b4=> Te6edf3itemTb4b4b4.Te6edf3lxmf_messageTff7b72?Tb4b4b4.Te6edf3hash Tff7b72!== Te6edf3hashTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3removeFirstPendingOutboundPlaceholderForPeerTb4b4b4(Te6edf3destinationHashTb4b4b4) Tb4b4b4{
Tff7b72let Te6edf3removed Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3chatItems Tff7b72= Tff7b72thisTb4b4b4.Te6edf3chatItemsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3itemTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3removedTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3h Tff7b72= Te6edf3itemTb4b4b4.Te6edf3lxmf_messageTff7b72?Tb4b4b4.Te6edf3hashTb4b4b4;
Tff7b72if Tb4b4b4(
Te6edf3itemTb4b4b4.Te6edf3is_outbound Tff7b72&&
Te6edf3hTff7b72?Tb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"pending-"Tb4b4b4) Tff7b72&&
Te6edf3itemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3destination_hash Tff7b72=== Te6edf3destinationHash
Tb4b4b4) Tb4b4b4{
Te6edf3removed Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3outboundSendingStatusTooltipTb4b4b4(Te6edf3lxmfMessageTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3lxmfMessageTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff""Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3synthetic Tff7b72= Tb4b4b4{ Te6edf3is_outboundTff7b72: Tff7b72trueTb4b4b4, Te6edf3lxmf_messageTff7b72: Te6edf3lxmfMessage Tb4b4b4}Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3showRichOutboundPendingUiTb4b4b4(Te6edf3syntheticTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.sending_ellipsis"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3_pendingPathfindingTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"Finding path: Reticulum is resolving a route to this peer. Your message sends when the route is ready."Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3state Tff7b72=== Ta5d6ff"generating"Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"Preparing message…"Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3state Tff7b72=== Ta5d6ff"sending" Tff7b72&& Tb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3progress Tff7b72?? T79c0ff0Tb4b4b4) Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff`Ta5d6ffSending… Tffd700${Tffa657NumberTb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3progressTb4b4b4)Tb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff0Tb4b4b4)Tffd700}Ta5d6ff%Ta5d6ff`Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3state Tff7b72=== Ta5d6ff"sending"Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"Sending…"Tb4b4b4;
Tb4b4b4}
Tff7b72return Ta5d6ff"Pending"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3isOutboundWaitingBubbleTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72return Tffa657BooleanTb4b4b4(Te6edf3chatItemTff7b72?Tb4b4b4.Te6edf3is_outbound Tff7b72&& Te6edf3chatItemTff7b72?Tb4b4b4.Te6edf3lxmf_messageTff7b72?Tb4b4b4.Te6edf3_pendingPathfindingTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3_hexToRgbTb4b4b4(Te6edf3hexTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3s Tff7b72= Tffa657StringTb4b4b4(Te6edf3hex Tff7b72?? Ta5d6ff""Tb4b4b4)
Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)
Tb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/^#/Tb4b4b4, Ta5d6ff""Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3sTb4b4b4.Te6edf3length Tff7b72!== T79c0ff6 Tff7b72|| Tff7b72!Ta5d6ff/^[0-9a-fA-F]{6}$/Tb4b4b4.Te6edf3testTb4b4b4(Te6edf3sTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72return Tb4b4b4{
Te6edf3rTff7b72: Tffa657parseIntTb4b4b4(Te6edf3sTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff2Tb4b4b4)Tb4b4b4, T79c0ff16Tb4b4b4)Tb4b4b4,
Te6edf3gTff7b72: Tffa657parseIntTb4b4b4(Te6edf3sTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff2Tb4b4b4, T79c0ff4Tb4b4b4)Tb4b4b4, T79c0ff16Tb4b4b4)Tb4b4b4,
Te6edf3bTff7b72: Tffa657parseIntTb4b4b4(Te6edf3sTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff4Tb4b4b4, T79c0ff6Tb4b4b4)Tb4b4b4, T79c0ff16Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3_hexRelativeLuminanceTb4b4b4(Te6edf3hexTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3rgb Tff7b72= Tff7b72thisTb4b4b4.Te6edf3_hexToRgbTb4b4b4(Te6edf3hexTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3rgbTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3toLinear Tff7b72= Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3x Tff7b72= Te6edf3c Tff7b72/ T79c0ff255Tb4b4b4;
Tff7b72return Te6edf3x Tff7b72<= T79c0ff0.03928 Tff7b72? Te6edf3x Tff7b72/ T79c0ff12.92 Tff7b72: Tffa657MathTb4b4b4.Te6edf3powTb4b4b4(Tb4b4b4(Te6edf3x Tff7b72+ T79c0ff0.055Tb4b4b4) Tff7b72/ T79c0ff1.055Tb4b4b4, T79c0ff2.4Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4;
Tff7b72const Te6edf3R Tff7b72= Te6edf3toLinearTb4b4b4(Te6edf3rgbTb4b4b4.Te6edf3rTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3G Tff7b72= Te6edf3toLinearTb4b4b4(Te6edf3rgbTb4b4b4.Te6edf3gTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3B Tff7b72= Te6edf3toLinearTb4b4b4(Te6edf3rgbTb4b4b4.Te6edf3bTb4b4b4)Tb4b4b4;
Tff7b72return T79c0ff0.2126 Tff7b72* Te6edf3R Tff7b72+ T79c0ff0.7152 Tff7b72* Te6edf3G Tff7b72+ T79c0ff0.0722 Tff7b72* Te6edf3BTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3pickTextColorForBubbleBackgroundTb4b4b4(Te6edf3hexTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3lum Tff7b72= Tff7b72thisTb4b4b4.Te6edf3_hexRelativeLuminanceTb4b4b4(Te6edf3hexTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3lum Tff7b72== Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"#111827"Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3lum Tff7b72> T79c0ff0.45 Tff7b72? Ta5d6ff"#111827" Tff7b72: Ta5d6ff"#ffffff"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3waitingBubbleBorderForHexTb4b4b4(Te6edf3hexTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3lum Tff7b72= Tff7b72thisTb4b4b4.Te6edf3_hexRelativeLuminanceTb4b4b4(Te6edf3hexTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3lum Tff7b72== Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"1px solid rgba(15, 23, 42, 0.12)"Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3lum Tff7b72> T79c0ff0.45 Tff7b72? Ta5d6ff"1px solid rgba(15, 23, 42, 0.12)" Tff7b72: Ta5d6ff"1px solid rgba(255, 255, 255, 0.14)"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3isOutboundSendingBusyTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3m Tff7b72= Te6edf3chatItemTff7b72?Tb4b4b4.Te6edf3lxmf_messageTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3chatItemTff7b72?Tb4b4b4.Te6edf3is_outbound Tff7b72|| Tff7b72!Te6edf3mTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72return Tb4b4b4[Ta5d6ff"outbound"Tb4b4b4, Ta5d6ff"sending"Tb4b4b4, Ta5d6ff"generating"Tb4b4b4]Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3mTb4b4b4.Te6edf3stateTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3isOutboundPendingForUiTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3m Tff7b72= Te6edf3chatItemTff7b72?Tb4b4b4.Te6edf3lxmf_messageTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3chatItemTff7b72?Tb4b4b4.Te6edf3is_outbound Tff7b72|| Tff7b72!Te6edf3mTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3mTb4b4b4.Te6edf3_pendingPathfindingTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4}
Tff7b72return Tb4b4b4[Ta5d6ff"outbound"Tb4b4b4, Ta5d6ff"sending"Tb4b4b4, Ta5d6ff"generating"Tb4b4b4]Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3mTb4b4b4.Te6edf3stateTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3isOutboundSendEscalatedTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3m Tff7b72= Te6edf3chatItemTff7b72?Tb4b4b4.Te6edf3lxmf_messageTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3chatItemTff7b72?Tb4b4b4.Te6edf3is_outbound Tff7b72|| Tff7b72!Te6edf3mTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isOutboundPendingForUiTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3created Tff7b72= Te6edf3mTb4b4b4.Te6edf3created_at Tff7b72? Tff7b72new Tffa657DateTb4b4b4(Te6edf3mTb4b4b4.Te6edf3created_atTb4b4b4)Tb4b4b4.Te6edf3getTimeTb4b4b4(Tb4b4b4) Tff7b72: T79c0ff0Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3createdTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3sendStatusUiMs Tff7b72- Te6edf3created Tff7b72>= T79c0ff3000Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3showRichOutboundPendingUiTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3GlobalStateTb4b4b4.Te6edf3detailedOutboundSendStatusTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3isOutboundSendEscalatedTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3_shouldTickOutboundSendStatusUiTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3selectedPeerChatItemsTb4b4b4.Te6edf3someTb4b4b4(Tb4b4b4(Te6edf3itemTb4b4b4) Tb4b4b4=> Tff7b72thisTb4b4b4.Te6edf3isOutboundPendingForUiTb4b4b4(Te6edf3itemTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3_scheduleOutboundSendStatusTickTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3sendStatusTickIntervalTb4b4b4) Tb4b4b4{
Te6edf3clearIntervalTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3sendStatusTickIntervalTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3sendStatusTickInterval Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3_shouldTickOutboundSendStatusUiTb4b4b4(Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3sendStatusUiMs Tff7b72= Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3sendStatusTickInterval Tff7b72= Te6edf3setIntervalTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3sendStatusUiMs Tff7b72= Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4, T79c0ff1000Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3isThemeOutboundBubbleTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3chatItemTff7b72?Tb4b4b4.Te6edf3is_outboundTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3st Tff7b72= Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTff7b72?Tb4b4b4.Te6edf3stateTb4b4b4;
Tff7b72if Tb4b4b4(Tb4b4b4[Ta5d6ff"cancelled"Tb4b4b4, Ta5d6ff"failed"Tb4b4b4]Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3stTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3usesThemeOutboundBubbleColorTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3outboundBubbleSurfaceClassTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3chatItemTff7b72?Tb4b4b4.Te6edf3is_outboundTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff""Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tb4b4b4[Ta5d6ff"cancelled"Tb4b4b4, Ta5d6ff"failed"Tb4b4b4]Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3stateTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff""Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3is_spamTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff""Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTff7b72?Tb4b4b4.Te6edf3_pendingPathfindingTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff""Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3usesThemeOutboundBubbleColorTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"shadow-sm"Tb4b4b4;
Tb4b4b4}
Tff7b72return Ta5d6ff"shadow-sm bg-sky-100 text-slate-900 border border-sky-200/90 dark:bg-sky-950/45 dark:text-sky-50 dark:border-sky-800/55"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3outboundBubbleFooterTimeClassTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3chatItemTb4b4b4.Te6edf3is_outboundTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"text-gray-500 dark:text-zinc-400"Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isOutboundWaitingBubbleTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"text-gray-600 dark:text-zinc-400"Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isThemeOutboundBubbleTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"text-sky-700/90 dark:text-sky-200/85"Tb4b4b4;
Tb4b4b4}
Tff7b72return Ta5d6ff"text-white/90"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3outboundSendingStatusIconClassTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isOutboundWaitingBubbleTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"text-gray-600 dark:text-zinc-400"Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isThemeOutboundBubbleTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"text-sky-700 dark:text-sky-300"Tb4b4b4;
Tb4b4b4}
Tff7b72return Ta5d6ff"text-white/90"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3outboundReplySnippetTitleClassTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3chatItemTb4b4b4.Te6edf3is_outboundTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"text-indigo-500/80"Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isOutboundWaitingBubbleTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"text-gray-700 dark:text-gray-300"Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isThemeOutboundBubbleTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"text-sky-800 dark:text-sky-200"Tb4b4b4;
Tb4b4b4}
Tff7b72return Ta5d6ff"text-white/80"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3outboundAttachmentCaptionClassTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3chatItemTb4b4b4.Te6edf3is_outboundTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"text-gray-500 dark:text-zinc-400"Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isOutboundWaitingBubbleTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"text-gray-600 dark:text-zinc-400"Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isThemeOutboundBubbleTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"text-sky-800 dark:text-sky-200"Tb4b4b4;
Tb4b4b4}
Tff7b72return Ta5d6ff"text-white"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3outboundBubbleDeliveredIconClassTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isThemeOutboundBubbleTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"text-sky-600 dark:text-sky-400"Tb4b4b4;
Tb4b4b4}
Tff7b72return Ta5d6ff"text-blue-300"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3outboundBubbleSentCheckIconClassTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isThemeOutboundBubbleTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"text-sky-700 dark:text-sky-300"Tb4b4b4;
Tb4b4b4}
Tff7b72return Ta5d6ff"text-white/90"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3outboundBubblePendingCheckIconClassTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isThemeOutboundBubbleTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"text-sky-700 dark:text-sky-300 opacity-50"Tb4b4b4;
Tb4b4b4}
Tff7b72return Ta5d6ff"text-white/90 opacity-50"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3outboundEmbeddedCardClassTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3chatItemTff7b72?Tb4b4b4.Te6edf3is_outboundTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff""Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isThemeOutboundBubbleTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"bg-sky-900/10 text-sky-900 border-sky-300/45 hover:bg-sky-900/14 dark:bg-white/10 dark:text-sky-50 dark:border-sky-700/45 dark:hover:bg-white/15"Tb4b4b4;
Tb4b4b4}
Tff7b72return Ta5d6ff"bg-white/20 text-white border-white/20 hover:bg-white/30"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3outboundEmbeddedSecondaryTextClassTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3chatItemTff7b72?Tb4b4b4.Te6edf3is_outboundTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff""Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isThemeOutboundBubbleTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"text-sky-800/75 dark:text-sky-200/75"Tb4b4b4;
Tb4b4b4}
Tff7b72return Ta5d6ff"text-white/60"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3outboundExpandedActionsShellClassTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3chatItemTff7b72?Tb4b4b4.Te6edf3is_outboundTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"border-gray-200 dark:border-zinc-800 bg-gray-50 dark:bg-zinc-900"Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isThemeOutboundBubbleTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"border-sky-200/70 dark:border-sky-800/50 bg-sky-50/40 dark:bg-sky-950/35"Tb4b4b4;
Tb4b4b4}
Tff7b72return Ta5d6ff"border-white/20 bg-white/10"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3outboundMessageMenuButtonHoverClassTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3chatItemTff7b72?Tb4b4b4.Te6edf3is_outboundTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"hover:bg-gray-200 dark:hover:bg-zinc-700"Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isThemeOutboundBubbleTb4b4b4(Te6edf3chatItemTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"hover:bg-sky-900/10 dark:hover:bg-white/10"Tb4b4b4;
Tb4b4b4}
Tff7b72return Ta5d6ff"hover:bg-white/20"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3outboundBubbleStatusHoverTitleTb4b4b4(Te6edf3lxmfMessageTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3lxmfMessageTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff""Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3synthetic Tff7b72= Tb4b4b4{ Te6edf3is_outboundTff7b72: Tff7b72trueTb4b4b4, Te6edf3lxmf_messageTff7b72: Te6edf3lxmfMessage Tb4b4b4}Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3showRichOutboundPendingUiTb4b4b4(Te6edf3syntheticTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.sending_ellipsis"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3_pendingPathfindingTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"Finding path"Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3state Tff7b72=== Ta5d6ff"generating"Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"Preparing message"Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3state Tff7b72=== Ta5d6ff"sending" Tff7b72&& Tb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3progress Tff7b72?? T79c0ff0Tb4b4b4) Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff`Ta5d6ffSending Tffd700${Tffa657NumberTb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3progressTb4b4b4)Tb4b4b4.Te6edf3toFixedTb4b4b4(T79c0ff0Tb4b4b4)Tffd700}Ta5d6ff%Ta5d6ff`Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3state Tff7b72=== Ta5d6ff"sending"Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"Sending"Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3state Tff7b72=== Ta5d6ff"outbound"Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"Outbound"Tb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3outboundSendingStatusTooltipTb4b4b4(Te6edf3lxmfMessageTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3outboundBubbleFailedTitleTb4b4b4(Te6edf3lxmfMessageTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3lxmfMessageTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff""Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3state Tff7b72=== Ta5d6ff"rejected"Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"Rejected"Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3state Tff7b72=== Ta5d6ff"cancelled"Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"Cancelled"Tb4b4b4;
Tb4b4b4}
Tff7b72return Ta5d6ff"Failed"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3isOpportunisticDeferredDeliveryTb4b4b4(Te6edf3lxmfMessageTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3lxmfMessageTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3lxmfMessageTb4b4b4.Te6edf3method Tff7b72=== Ta5d6ff"opportunistic" Tff7b72&& Te6edf3lxmfMessageTb4b4b4.Te6edf3state Tff7b72=== Ta5d6ff"failed"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3warmPathToPeerTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedPeerTff7b72?Tb4b4b4.Te6edf3destination_hashTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/destination/Tffd700${Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTffd700}Ta5d6ff/request-pathTa5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3imageGroupGalleryUrlsTb4b4b4(Te6edf3itemsTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3imageGroupSortedChronTb4b4b4(Te6edf3itemsTb4b4b4)Tb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3itTb4b4b4) Tb4b4b4=> Tff7b72thisTb4b4b4.Te6edf3lxmfImageUrlTb4b4b4(Te6edf3itTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3downloadFileFromBase64Tff7b72: Tff7b72async Tff7b72function Tb4b4b4(Te6edf3fileNameTb4b4b4, Te6edf3fileBytesBase64Tb4b4b4) Tb4b4b4{
T8b949e// create blob from base64 encoded file bytes
Tff7b72const Te6edf3byteCharacters Tff7b72= Te6edf3atobTb4b4b4(Te6edf3fileBytesBase64Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3byteNumbers Tff7b72= Tff7b72new Tffa657ArrayTb4b4b4(Te6edf3byteCharactersTb4b4b4.Te6edf3lengthTb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< Te6edf3byteCharactersTb4b4b4.Te6edf3lengthTb4b4b4; Te6edf3iTff7b72++Tb4b4b4) Tb4b4b4{
Te6edf3byteNumbersTb4b4b4[Te6edf3iTb4b4b4] Tff7b72= Te6edf3byteCharactersTb4b4b4.Te6edf3charCodeAtTb4b4b4(Te6edf3iTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3byteArray Tff7b72= Tff7b72new Tffa657Uint8ArrayTb4b4b4(Te6edf3byteNumbersTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3blob Tff7b72= Tff7b72new Te6edf3BlobTb4b4b4(Tb4b4b4[Te6edf3byteArrayTb4b4b4]Tb4b4b4)Tb4b4b4;
T8b949e// create object url for blob
Tff7b72const Te6edf3objectUrl Tff7b72= Te6edf3URLTb4b4b4.Te6edf3createObjectURLTb4b4b4(Te6edf3blobTb4b4b4)Tb4b4b4;
T8b949e// create link element to download blob
Tff7b72const Te6edf3link Tff7b72= Tffa657documentTb4b4b4.Te6edf3createElementTb4b4b4(Ta5d6ff"a"Tb4b4b4)Tb4b4b4;
Te6edf3linkTb4b4b4.Te6edf3href Tff7b72= Te6edf3objectUrlTb4b4b4;
Te6edf3linkTb4b4b4.Te6edf3download Tff7b72= Te6edf3fileNameTb4b4b4;
Te6edf3linkTb4b4b4.Te6edf3styleTb4b4b4.Te6edf3display Tff7b72= Ta5d6ff"none"Tb4b4b4;
Tffa657documentTb4b4b4.Te6edf3bodyTb4b4b4.Te6edf3appendTb4b4b4(Te6edf3linkTb4b4b4)Tb4b4b4;
T8b949e// click link to download file in browser
Te6edf3linkTb4b4b4.Te6edf3clickTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// link element is no longer needed
Te6edf3linkTb4b4b4.Te6edf3removeTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// revoke object url to clear memory
Te6edf3setTimeoutTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Te6edf3URLTb4b4b4.Te6edf3revokeObjectURLTb4b4b4(Te6edf3objectUrlTb4b4b4)Tb4b4b4, T79c0ff10000Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3processAudioForSelectedPeerChatItemsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3chatItem Tff7b72of Tff7b72thisTb4b4b4.Te6edf3selectedPeerChatItemsTb4b4b4) Tb4b4b4{
T8b949e// skip if no audio, or if audio bytes are missing (must be downloaded manually)
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTff7b72?Tb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3audio Tff7b72|| Tff7b72!Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3audioTb4b4b4.Te6edf3audio_bytesTb4b4b4) Tb4b4b4{
Tff7b72continueTb4b4b4;
Tb4b4b4}
T8b949e// skip if audio already cached
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3lxmfMessageAudioAttachmentCacheTb4b4b4[Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4]Tb4b4b4) Tb4b4b4{
Tff7b72continueTb4b4b4;
Tb4b4b4}
T8b949e// decode audio to blob url
Tff7b72const Te6edf3objectUrl Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3decodeLxmfAudioFieldToBlobUrlTb4b4b4(Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3audioTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3objectUrlTb4b4b4) Tb4b4b4{
Tff7b72continueTb4b4b4;
Tb4b4b4}
T8b949e// update audio cache
Tff7b72thisTb4b4b4.Te6edf3lxmfMessageAudioAttachmentCacheTb4b4b4[Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4] Tff7b72= Te6edf3objectUrlTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3decodeLxmfAudioFieldToBlobUrlTb4b4b4(Te6edf3audioFieldTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
T8b949e// get audio mode and audio bytes from audio field
Tff7b72const Te6edf3audioMode Tff7b72= Te6edf3audioFieldTb4b4b4.Te6edf3audio_modeTb4b4b4;
Tff7b72const Te6edf3audioBytes Tff7b72= Te6edf3audioFieldTb4b4b4.Te6edf3audio_bytesTb4b4b4;
T8b949e// handle opus: AM_OPUS_OGG
Tff7b72if Tb4b4b4(Te6edf3audioMode Tff7b72=== T79c0ff0x10Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3decodeOpusAudioToBlobUrlTb4b4b4(Te6edf3audioFieldTb4b4b4.Te6edf3audio_bytesTb4b4b4)Tb4b4b4;
Tb4b4b4}
T8b949e// determine codec2 mode, or skip if unknown
Tff7b72const Te6edf3codecMode Tff7b72= Tff7b72thisTb4b4b4.Te6edf3lxmfAudioModeToCodec2ModeMapTb4b4b4[Te6edf3audioModeTb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3codecModeTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Ta5d6ff"unsupported audio mode: " Tff7b72+ Te6edf3audioModeTb4b4b4)Tb4b4b4;
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}
T8b949e// convert to uint8 array
Tff7b72let Te6edf3encodedTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72typeof Te6edf3audioBytes Tff7b72=== Ta5d6ff"string"Tb4b4b4) Tb4b4b4{
Te6edf3encoded Tff7b72= Tff7b72thisTb4b4b4.Te6edf3base64ToArrayBufferTb4b4b4(Te6edf3audioBytesTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3encoded Tff7b72= Tff7b72new Tffa657Uint8ArrayTb4b4b4(Te6edf3audioBytesTb4b4b4)Tb4b4b4;
Tb4b4b4}
T8b949e// decode codec2 audio
Tff7b72const Te6edf3decoded Tff7b72= Tff7b72await Te6edf3Codec2LibTb4b4b4.Te6edf3runDecodeTb4b4b4(Te6edf3codecModeTb4b4b4, Te6edf3encodedTb4b4b4)Tb4b4b4;
T8b949e// convert decoded codec2 to wav audio
Tff7b72const Te6edf3wavAudio Tff7b72= Tff7b72await Te6edf3Codec2LibTb4b4b4.Te6edf3rawToWavTb4b4b4(Te6edf3decodedTb4b4b4)Tb4b4b4;
T8b949e// create blob from wav audio
Tff7b72const Te6edf3blob Tff7b72= Tff7b72new Te6edf3BlobTb4b4b4(Tb4b4b4[Te6edf3wavAudioTb4b4b4]Tb4b4b4, Tb4b4b4{
Te6edf3typeTff7b72: Ta5d6ff"audio/wav"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
T8b949e// create object url for blob
Tff7b72return Te6edf3URLTb4b4b4.Te6edf3createObjectURLTb4b4b4(Te6edf3blobTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
T8b949e// failed to decode lxmf audio field
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3decodeOpusAudioToBlobUrlTb4b4b4(Te6edf3audioBytesTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
T8b949e// convert to uint8 array
Tff7b72let Te6edf3opusAudioBytesTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72typeof Te6edf3audioBytes Tff7b72=== Ta5d6ff"string"Tb4b4b4) Tb4b4b4{
Te6edf3opusAudioBytes Tff7b72= Tff7b72thisTb4b4b4.Te6edf3base64ToArrayBufferTb4b4b4(Te6edf3audioBytesTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3opusAudioBytes Tff7b72= Tff7b72new Tffa657Uint8ArrayTb4b4b4(Te6edf3audioBytesTb4b4b4)Tb4b4b4;
Tb4b4b4}
T8b949e// create blob from opus audio
Tff7b72const Te6edf3blob Tff7b72= Tff7b72new Te6edf3BlobTb4b4b4(Tb4b4b4[Te6edf3opusAudioBytesTb4b4b4]Tb4b4b4, Tb4b4b4{
Te6edf3typeTff7b72: Ta5d6ff"audio/opus"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
T8b949e// create object url for blob
Tff7b72return Te6edf3URLTb4b4b4.Te6edf3createObjectURLTb4b4b4(Te6edf3blobTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
T8b949e// failed to decode opus audio
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3base64ToArrayBufferTff7b72: Tff7b72function Tb4b4b4(Te6edf3base64Tb4b4b4) Tb4b4b4{
Tff7b72return Tffa657Uint8ArrayTb4b4b4.Tff7b72fromTb4b4b4(Te6edf3atobTb4b4b4(Te6edf3base64Tb4b4b4)Tb4b4b4, Tb4b4b4(Te6edf3cTb4b4b4) Tb4b4b4=> Te6edf3cTb4b4b4.Te6edf3charCodeAtTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3deleteChatItemTb4b4b4(Te6edf3chatItemTb4b4b4, Te6edf3shouldConfirm Tff7b72= Tff7b72trueTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
T8b949e// ask user to confirm deleting message
Tff7b72if Tb4b4b4(
Te6edf3shouldConfirm Tff7b72&&
Tff7b72!Tb4b4b4(Tff7b72await Te6edf3DialogUtilsTb4b4b4.Te6edf3confirmTb4b4b4(
Ta5d6ff"Are you sure you want to delete this message? This can not be undone!"
Tb4b4b4)Tb4b4b4)
Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
T8b949e// make sure it's an lxmf message
Tff7b72if Tb4b4b4(Te6edf3chatItemTb4b4b4.Te6edf3type Tff7b72!== Ta5d6ff"lxmf_message"Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
T8b949e// delete lxmf message from server
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Tff7b72deleteTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/lxmf-messages/Tffd700${Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
T8b949e// remove lxmf message from chat items using hash, as other pending items might not have an id yet
Tff7b72thisTb4b4b4.Te6edf3chatItems Tff7b72= Tff7b72thisTb4b4b4.Te6edf3chatItemsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3itemTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72return Te6edf3itemTb4b4b4.Te6edf3lxmf_messageTff7b72?Tb4b4b4.Te6edf3hash Tff7b72!== Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
T8b949e// do nothing if failed to delete message
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3openShareContactModalTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/telephone/contacts"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3contacts Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3contacts Tff7b72?? Tb4b4b4(Tffa657ArrayTb4b4b4.Te6edf3isArrayTb4b4b4(Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4) Tff7b72? Te6edf3responseTb4b4b4.Te6edf3data Tff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3contactsTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3infoTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.no_contacts_telephone"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3isShareContactModalOpen Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.failed_load_contacts"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3shareContactTb4b4b4(Te6edf3contactTb4b4b4) Tb4b4b4{
Tff7b72let Te6edf3sharedString Tff7b72= Ta5d6ff`Ta5d6ffContact: Tffd700${Te6edf3contactTb4b4b4.Te6edf3nameTffd700}Ta5d6ff <Tffd700${Te6edf3contactTb4b4b4.Te6edf3remote_identity_hashTffd700}Ta5d6ff>Ta5d6ff`Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3contactTb4b4b4.Te6edf3lxmf_addressTb4b4b4) Te6edf3sharedString Tff7b72+= Ta5d6ff`Ta5d6ff [LXMF: Tffd700${Te6edf3contactTb4b4b4.Te6edf3lxmf_addressTffd700}Ta5d6ff]Ta5d6ff`Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3contactTb4b4b4.Te6edf3lxst_addressTb4b4b4) Te6edf3sharedString Tff7b72+= Ta5d6ff`Ta5d6ff [LXST: Tffd700${Te6edf3contactTb4b4b4.Te6edf3lxst_addressTffd700}Ta5d6ff]Ta5d6ff`Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newMessageText Tff7b72= Te6edf3sharedStringTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isShareContactModalOpen Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3sendMessageTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3shareAsPaperMessageTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3paperMessageHash Tff7b72= Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isPaperMessageModalOpen Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3clearComposeAfterEnqueueTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3newMessageText Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3saveDraftTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3newMessageImages Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newMessageImageUrls Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newMessageAudio Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newMessageTelemetry Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newMessageFiles Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3clearFileInputTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3replyingTo Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3buildOutboundJobSnapshotTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3destinationHash Tff7b72= Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4;
Tff7b72const Te6edf3deliveryMethod Tff7b72= Tff7b72thisTb4b4b4.Te6edf3newMessageDeliveryMethodTb4b4b4;
Tff7b72const Te6edf3text Tff7b72= Tff7b72thisTb4b4b4.Te6edf3newMessageTextTb4b4b4;
Tff7b72const Te6edf3replyToHash Tff7b72= Tff7b72thisTb4b4b4.Te6edf3replyingToTff7b72?Tb4b4b4.Te6edf3lxmf_messageTff7b72?Tb4b4b4.Te6edf3hash Tff7b72|| Tff7b72nullTb4b4b4;
Tff7b72const Te6edf3replyQuotedContent Tff7b72=
Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3replyingTo Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3getRepliedMessageTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3replyingToTb4b4b4.Te6edf3lxmf_messageTff7b72?Tb4b4b4.Te6edf3hashTb4b4b4)Tff7b72?Tb4b4b4.Te6edf3contentTb4b4b4) Tff7b72|| Tff7b72nullTb4b4b4;
Tff7b72const Te6edf3fields Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newMessageTelemetryTb4b4b4) Tb4b4b4{
Te6edf3fieldsTb4b4b4[Ta5d6ff"telemetry"Tb4b4b4] Tff7b72= Tff7b72thisTb4b4b4.Te6edf3newMessageTelemetryTb4b4b4;
Tb4b4b4}
Tff7b72let Te6edf3fileAttachmentsTotalSize Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newMessageFilesTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3fileAttachments Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3file Tff7b72of Tff7b72thisTb4b4b4.Te6edf3newMessageFilesTb4b4b4) Tb4b4b4{
Te6edf3fileAttachmentsTotalSize Tff7b72+= Te6edf3fileTb4b4b4.Te6edf3sizeTb4b4b4;
Te6edf3fileAttachmentsTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3file_nameTff7b72: Te6edf3fileTb4b4b4.Te6edf3nameTb4b4b4,
Te6edf3file_sizeTff7b72: Te6edf3fileTb4b4b4.Te6edf3sizeTb4b4b4,
Te6edf3file_bytesTff7b72: Te6edf3UtilsTb4b4b4.Te6edf3arrayBufferToBase64Tb4b4b4(Tff7b72await Te6edf3fileTb4b4b4.Te6edf3arrayBufferTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3fieldsTb4b4b4[Ta5d6ff"file_attachments"Tb4b4b4] Tff7b72= Te6edf3fileAttachmentsTb4b4b4;
Tb4b4b4}
Tff7b72let Te6edf3imageTotalSize Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72const Te6edf3images Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newMessageImagesTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3image Tff7b72of Tff7b72thisTb4b4b4.Te6edf3newMessageImagesTb4b4b4) Tb4b4b4{
Te6edf3imageTotalSize Tff7b72+= Te6edf3imageTb4b4b4.Te6edf3sizeTb4b4b4;
Te6edf3imagesTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3image_typeTff7b72: Te6edf3imageTb4b4b4.Te6edf3typeTb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff"image/"Tb4b4b4, Ta5d6ff""Tb4b4b4)Tb4b4b4,
Te6edf3image_sizeTff7b72: Te6edf3imageTb4b4b4.Te6edf3sizeTb4b4b4,
Te6edf3image_bytesTff7b72: Te6edf3UtilsTb4b4b4.Te6edf3arrayBufferToBase64Tb4b4b4(Tff7b72await Te6edf3imageTb4b4b4.Te6edf3arrayBufferTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4,
Te6edf3nameTff7b72: Te6edf3imageTb4b4b4.Te6edf3nameTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72let Te6edf3audioTotalSize Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3newMessageAudioTb4b4b4) Tb4b4b4{
Te6edf3audioTotalSize Tff7b72= Tff7b72thisTb4b4b4.Te6edf3newMessageAudioTb4b4b4.Te6edf3sizeTb4b4b4;
Te6edf3fieldsTb4b4b4[Ta5d6ff"audio"Tb4b4b4] Tff7b72= Tb4b4b4{
Te6edf3audio_modeTff7b72: Tff7b72thisTb4b4b4.Te6edf3newMessageAudioTb4b4b4.Te6edf3audio_modeTb4b4b4,
Te6edf3audio_sizeTff7b72: Tff7b72thisTb4b4b4.Te6edf3newMessageAudioTb4b4b4.Te6edf3sizeTb4b4b4,
Te6edf3audio_bytesTff7b72: Te6edf3UtilsTb4b4b4.Te6edf3arrayBufferToBase64Tb4b4b4(Tff7b72await Tff7b72thisTb4b4b4.Te6edf3newMessageAudioTb4b4b4.Te6edf3audio_blobTb4b4b4.Te6edf3arrayBufferTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3contentSize Tff7b72= Te6edf3textTb4b4b4.Te6edf3lengthTb4b4b4;
Tff7b72const Te6edf3totalMessageSize Tff7b72= Te6edf3contentSize Tff7b72+ Te6edf3fileAttachmentsTotalSize Tff7b72+ Te6edf3imageTotalSize Tff7b72+ Te6edf3audioTotalSizeTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3totalMessageSize Tff7b72> T79c0ff1000 Tff7b72* T79c0ff900Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(
Tff7b72!Tb4b4b4(Tff7b72await Te6edf3DialogUtilsTb4b4b4.Te6edf3confirmTb4b4b4(
Ta5d6ff`Ta5d6ffYour message exceeds 900KB (It's Tffd700${Tff7b72thisTb4b4b4.Te6edf3formatBytesTb4b4b4(Te6edf3totalMessageSizeTb4b4b4)Tffd700}Ta5d6ff). It may be rejected by the recipient unless they have increased their delivery limit. Do you want to try sending anyway?Ta5d6ff`
Tb4b4b4)Tb4b4b4)
Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72const Te6edf3canOptimisticPending Tff7b72=
Tff7b72thisTb4b4b4.Te6edf3newMessageFilesTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0 Tff7b72&&
Tff7b72thisTb4b4b4.Te6edf3newMessageAudio Tff7b72== Tff7b72null Tff7b72&&
Tff7b72thisTb4b4b4.Te6edf3newMessageTelemetry Tff7b72== Tff7b72null Tff7b72&&
Tff7b72thisTb4b4b4.Te6edf3newMessageImagesTb4b4b4.Te6edf3length Tff7b72<= T79c0ff1Tb4b4b4;
Tff7b72return Tb4b4b4{
Te6edf3destinationHashTb4b4b4,
Te6edf3deliveryMethodTb4b4b4,
Te6edf3textTb4b4b4,
Te6edf3fieldsTb4b4b4,
Te6edf3imagesTb4b4b4,
Te6edf3imagePreviewUrlsTff7b72: Tb4b4b4[Tb4b4b4...Tff7b72thisTb4b4b4.Te6edf3newMessageImageUrlsTb4b4b4]Tb4b4b4,
Te6edf3replyToHashTb4b4b4,
Te6edf3replyQuotedContentTb4b4b4,
Te6edf3myLxmfAddressHashTff7b72: Tff7b72thisTb4b4b4.Te6edf3myLxmfAddressHashTb4b4b4,
Te6edf3canOptimisticPendingTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3sendMessageTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3canSendMessageTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3_sendMessageChain Tff7b72= Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3_sendMessageChain Tff7b72|| Tffa657PromiseTb4b4b4.Te6edf3resolveTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3thenTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=>
Tff7b72thisTb4b4b4.Te6edf3_enqueueOutboundFromComposeTb4b4b4(Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3_sendMessageChainTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3_enqueueOutboundFromComposeTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3job Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3buildOutboundJobSnapshotTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3jobTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3_outboundQueueTb4b4b4.Te6edf3enqueueTb4b4b4(Te6edf3jobTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3clearComposeAfterEnqueueTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3adjustTextareaHeightTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3scrollMessagesToBottomTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3msg Tff7b72= Te6edf3eTff7b72?Tb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72?? Te6edf3eTff7b72?Tb4b4b4.Te6edf3message Tff7b72?? Ta5d6ff"failed to prepare message"Tb4b4b4;
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Te6edf3msgTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3_executeOutboundSendJobTb4b4b4(Te6edf3jobTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Te6edf3jobTb4b4b4.Te6edf3pendingHash Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3jobTb4b4b4.Te6edf3canOptimisticPendingTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3pendingHash Tff7b72= Ta5d6ff`Ta5d6ffpending-Tffd700${Te6edf3cryptoTb4b4b4.Te6edf3randomUUIDTb4b4b4(Tb4b4b4)Tffd700}Ta5d6ff`Tb4b4b4;
Te6edf3jobTb4b4b4.Te6edf3pendingHash Tff7b72= Te6edf3pendingHashTb4b4b4;
Tff7b72const Te6edf3pendingFields Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3jobTb4b4b4.Te6edf3imagesTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3pendingFieldsTb4b4b4.Te6edf3image Tff7b72= Tb4b4b4{
Te6edf3image_typeTff7b72: Te6edf3jobTb4b4b4.Te6edf3imagesTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4.Te6edf3image_typeTb4b4b4,
Te6edf3image_sizeTff7b72: Te6edf3jobTb4b4b4.Te6edf3imagesTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4.Te6edf3image_sizeTb4b4b4,
Te6edf3_preview_urlTff7b72: Te6edf3jobTb4b4b4.Te6edf3imagePreviewUrlsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3chatItemsTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3typeTff7b72: Ta5d6ff"lxmf_message"Tb4b4b4,
Te6edf3lxmf_messageTff7b72: Tb4b4b4{
Te6edf3hashTff7b72: Te6edf3pendingHashTb4b4b4,
Te6edf3contentTff7b72: Te6edf3jobTb4b4b4.Te6edf3textTb4b4b4,
Te6edf3stateTff7b72: Ta5d6ff"sending"Tb4b4b4,
Te6edf3progressTff7b72: T79c0ff0Tb4b4b4,
Te6edf3created_atTff7b72: Tff7b72new Tffa657DateTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3toISOStringTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3destination_hashTff7b72: Te6edf3jobTb4b4b4.Te6edf3destinationHashTb4b4b4,
Te6edf3source_hashTff7b72: Te6edf3jobTb4b4b4.Te6edf3myLxmfAddressHashTb4b4b4,
Te6edf3fieldsTff7b72: Tffa657ObjectTb4b4b4.Te6edf3keysTb4b4b4(Te6edf3pendingFieldsTb4b4b4)Tb4b4b4.Te6edf3length Tff7b72> T79c0ff0 Tff7b72? Te6edf3pendingFields Tff7b72: Tff7b72undefinedTb4b4b4,
Te6edf3reply_to_hashTff7b72: Te6edf3jobTb4b4b4.Te6edf3replyToHashTb4b4b4,
Te6edf3_pendingPathfindingTff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3is_outboundTff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3scrollMessagesToBottomTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3jobTb4b4b4.Te6edf3imagesTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/lxmf-messages/sendTa5d6ff`Tb4b4b4, Tb4b4b4{
Te6edf3delivery_methodTff7b72: Te6edf3jobTb4b4b4.Te6edf3deliveryMethodTb4b4b4,
Te6edf3lxmf_messageTff7b72: Tb4b4b4{
Te6edf3destination_hashTff7b72: Te6edf3jobTb4b4b4.Te6edf3destinationHashTb4b4b4,
Te6edf3contentTff7b72: Te6edf3jobTb4b4b4.Te6edf3textTb4b4b4,
Te6edf3reply_to_hashTff7b72: Te6edf3jobTb4b4b4.Te6edf3replyToHashTb4b4b4,
Te6edf3reply_quoted_contentTff7b72: Te6edf3jobTb4b4b4.Te6edf3replyQuotedContent Tff7b72|| Tff7b72nullTb4b4b4,
Te6edf3fieldsTff7b72: Te6edf3jobTb4b4b4.Te6edf3fieldsTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3removePendingOutboundPlaceholderTb4b4b4(Te6edf3jobTb4b4b4.Te6edf3pendingHashTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isLxmfMessageInUiTb4b4b4(Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3chatItemsTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3typeTff7b72: Ta5d6ff"lxmf_message"Tb4b4b4,
Te6edf3lxmf_messageTff7b72: Tff7b72thisTb4b4b4.Te6edf3normalizeLxmfMessageTb4b4b4(Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3lxmf_messageTb4b4b4, Tff7b72trueTb4b4b4)Tb4b4b4,
Te6edf3is_outboundTff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72const Te6edf3firstImage Tff7b72= Te6edf3jobTb4b4b4.Te6edf3imagesTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3firstFields Tff7b72= Tb4b4b4{
Tb4b4b4...Te6edf3jobTb4b4b4.Te6edf3fieldsTb4b4b4,
Te6edf3imageTff7b72: Tb4b4b4{ Te6edf3image_typeTff7b72: Te6edf3firstImageTb4b4b4.Te6edf3image_typeTb4b4b4, Te6edf3image_bytesTff7b72: Te6edf3firstImageTb4b4b4.Te6edf3image_bytes Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/lxmf-messages/sendTa5d6ff`Tb4b4b4, Tb4b4b4{
Te6edf3delivery_methodTff7b72: Te6edf3jobTb4b4b4.Te6edf3deliveryMethodTb4b4b4,
Te6edf3lxmf_messageTff7b72: Tb4b4b4{
Te6edf3destination_hashTff7b72: Te6edf3jobTb4b4b4.Te6edf3destinationHashTb4b4b4,
Te6edf3contentTff7b72: Te6edf3jobTb4b4b4.Te6edf3textTb4b4b4,
Te6edf3reply_to_hashTff7b72: Te6edf3jobTb4b4b4.Te6edf3replyToHashTb4b4b4,
Te6edf3reply_quoted_contentTff7b72: Te6edf3jobTb4b4b4.Te6edf3replyQuotedContent Tff7b72|| Tff7b72nullTb4b4b4,
Te6edf3fieldsTff7b72: Te6edf3firstFieldsTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3removePendingOutboundPlaceholderTb4b4b4(Te6edf3jobTb4b4b4.Te6edf3pendingHashTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isLxmfMessageInUiTb4b4b4(Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3chatItemsTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3typeTff7b72: Ta5d6ff"lxmf_message"Tb4b4b4,
Te6edf3lxmf_messageTff7b72: Tff7b72thisTb4b4b4.Te6edf3normalizeLxmfMessageTb4b4b4(Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3lxmf_messageTb4b4b4, Tff7b72trueTb4b4b4)Tb4b4b4,
Te6edf3is_outboundTff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3i Tff7b72= T79c0ff1Tb4b4b4; Te6edf3i Tff7b72< Te6edf3jobTb4b4b4.Te6edf3imagesTb4b4b4.Te6edf3lengthTb4b4b4; Te6edf3iTff7b72++Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3image Tff7b72= Te6edf3jobTb4b4b4.Te6edf3imagesTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3subsequentFields Tff7b72= Tb4b4b4{
Te6edf3imageTff7b72: Tb4b4b4{ Te6edf3image_typeTff7b72: Te6edf3imageTb4b4b4.Te6edf3image_typeTb4b4b4, Te6edf3image_bytesTff7b72: Te6edf3imageTb4b4b4.Te6edf3image_bytes Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3subResponse Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/lxmf-messages/sendTa5d6ff`Tb4b4b4, Tb4b4b4{
Te6edf3delivery_methodTff7b72: Te6edf3jobTb4b4b4.Te6edf3deliveryMethodTb4b4b4,
Te6edf3lxmf_messageTff7b72: Tb4b4b4{
Te6edf3destination_hashTff7b72: Te6edf3jobTb4b4b4.Te6edf3destinationHashTb4b4b4,
Te6edf3contentTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3fieldsTff7b72: Te6edf3subsequentFieldsTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isLxmfMessageInUiTb4b4b4(Te6edf3subResponseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3chatItemsTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3typeTff7b72: Ta5d6ff"lxmf_message"Tb4b4b4,
Te6edf3lxmf_messageTff7b72: Tff7b72thisTb4b4b4.Te6edf3normalizeLxmfMessageTb4b4b4(Te6edf3subResponseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3lxmf_messageTb4b4b4, Tff7b72trueTb4b4b4)Tb4b4b4,
Te6edf3is_outboundTff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3subErrorTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff`Ta5d6ffFailed to send image Tffd700${Te6edf3i Tff7b72+ T79c0ff1Tffd700}Ta5d6ff:Ta5d6ff`Tb4b4b4, Te6edf3subErrorTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3scrollMessagesToBottomTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3removePendingOutboundPlaceholderTb4b4b4(Te6edf3jobTb4b4b4.Te6edf3pendingHashTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3message Tff7b72= Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72?? Ta5d6ff"failed to send message"Tb4b4b4;
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Te6edf3messageTb4b4b4)Tb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3cancelSendingMessageTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
T8b949e// get lxmf message hash else do nothing
Tff7b72const Te6edf3lxmfMessageHash Tff7b72= Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3lxmfMessageHashTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
T8b949e// cancel sending lxmf message
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/lxmf-messages/Tffd700${Te6edf3lxmfMessageHashTffd700}Ta5d6ff/cancelTa5d6ff`Tb4b4b4)Tb4b4b4;
T8b949e// get lxmf message from response
Tff7b72const Te6edf3lxmfMessage Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3lxmf_messageTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3lxmfMessageTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
T8b949e// update lxmf message in ui
Tff7b72thisTb4b4b4.Te6edf3onLxmfMessageUpdatedTb4b4b4(Te6edf3lxmfMessageTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
T8b949e// show error
Tff7b72const Te6edf3message Tff7b72= Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72?? Ta5d6ff"failed to cancel message"Tb4b4b4;
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Te6edf3messageTb4b4b4)Tb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3retrySendingMessageTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3deleteChatItemTb4b4b4(Te6edf3chatItemTb4b4b4, Tff7b72falseTb4b4b4)Tb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3replyQuoted Tff7b72=
Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3reply_quoted_content Tff7b72||
Tb4b4b4(Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3reply_to_hash Tff7b72&&
Tff7b72thisTb4b4b4.Te6edf3getRepliedMessageTb4b4b4(Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3reply_to_hashTb4b4b4)Tff7b72?Tb4b4b4.Te6edf3contentTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/lxmf-messages/sendTa5d6ff`Tb4b4b4, Tb4b4b4{
Te6edf3lxmf_messageTff7b72: Tb4b4b4{
Te6edf3destination_hashTff7b72: Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3destination_hashTb4b4b4,
Te6edf3contentTff7b72: Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3contentTb4b4b4,
Te6edf3reply_to_hashTff7b72: Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3reply_to_hash Tff7b72|| Tff7b72nullTb4b4b4,
Te6edf3reply_quoted_contentTff7b72: Te6edf3replyQuoted Tff7b72|| Tff7b72nullTb4b4b4,
Te6edf3fieldsTff7b72: Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3fieldsTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isLxmfMessageInUiTb4b4b4(Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3lxmf_messageTb4b4b4.Te6edf3hashTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3chatItemsTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3typeTff7b72: Ta5d6ff"lxmf_message"Tb4b4b4,
Te6edf3lxmf_messageTff7b72: Tff7b72thisTb4b4b4.Te6edf3normalizeLxmfMessageTb4b4b4(Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3lxmf_messageTb4b4b4, Tff7b72trueTb4b4b4)Tb4b4b4,
Te6edf3is_outboundTff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3scrollMessagesToBottomTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3message Tff7b72= Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72?? Ta5d6ff"failed to send message"Tb4b4b4;
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Te6edf3messageTb4b4b4)Tb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3retryAllFailedOrCancelledMessagesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3failedItems Tff7b72= Tff7b72thisTb4b4b4.Te6edf3selectedPeerChatItemsTb4b4b4.Te6edf3filterTb4b4b4(
Tb4b4b4(Te6edf3itemTb4b4b4) Tb4b4b4=> Te6edf3itemTb4b4b4.Te6edf3is_outbound Tff7b72&& Tb4b4b4[Ta5d6ff"failed"Tb4b4b4, Ta5d6ff"cancelled"Tb4b4b4]Tb4b4b4.Te6edf3includesTb4b4b4(Te6edf3itemTb4b4b4.Te6edf3lxmf_messageTff7b72?Tb4b4b4.Te6edf3stateTb4b4b4)
Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3failedItemsTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Tb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72if Tb4b4b4(
Tff7b72!Tb4b4b4(Tff7b72await Te6edf3DialogUtilsTb4b4b4.Te6edf3confirmTb4b4b4(
Ta5d6ff`Ta5d6ffAre you sure you want to retry sending all Tffd700${Te6edf3failedItemsTb4b4b4.Te6edf3lengthTffd700}Ta5d6ff failed/cancelled messages?Ta5d6ff`
Tb4b4b4)Tb4b4b4)
Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3item Tff7b72of Te6edf3failedItemsTb4b4b4) Tb4b4b4{
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3retrySendingMessageTb4b4b4(Te6edf3itemTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3shareLocationTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3toastKey Tff7b72= Ta5d6ff"location_share"Tb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3location_source Tff7b72=== Ta5d6ff"manual"Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3lat Tff7b72= Tffa657parseFloatTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3configTb4b4b4.Te6edf3location_manual_latTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3lon Tff7b72= Tffa657parseFloatTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3configTb4b4b4.Te6edf3location_manual_lonTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3alt Tff7b72= Tffa657parseFloatTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3configTb4b4b4.Te6edf3location_manual_altTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tffa657isNaNTb4b4b4(Te6edf3latTb4b4b4) Tff7b72|| Tffa657isNaNTb4b4b4(Te6edf3lonTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Invalid manual coordinates in settings"Tb4b4b4, T79c0ff5000Tb4b4b4, Te6edf3toastKeyTb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3newMessageTelemetry Tff7b72= Tb4b4b4{
Te6edf3latitudeTff7b72: Te6edf3latTb4b4b4,
Te6edf3longitudeTff7b72: Te6edf3lonTb4b4b4,
Te6edf3altitudeTff7b72: Tffa657isNaNTb4b4b4(Te6edf3altTb4b4b4) Tff7b72? T79c0ff0 Tff7b72: Te6edf3altTb4b4b4,
Te6edf3speedTff7b72: T79c0ff0Tb4b4b4,
Te6edf3bearingTff7b72: T79c0ff0Tb4b4b4,
Te6edf3accuracyTff7b72: T79c0ff0Tb4b4b4,
Te6edf3last_updateTff7b72: Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72/ T79c0ff1000Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3sendMessageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.location_sent"Tb4b4b4)Tb4b4b4, T79c0ff3000Tb4b4b4, Te6edf3toastKeyTb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3navigatorTb4b4b4.Te6edf3geolocationTb4b4b4) Tb4b4b4{
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"map.geolocation_not_supported"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Te6edf3ToastUtilsTb4b4b4.Te6edf3loadingTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.fetching_location"Tb4b4b4)Tb4b4b4, T79c0ff0Tb4b4b4, Te6edf3toastKeyTb4b4b4)Tb4b4b4;
Te6edf3navigatorTb4b4b4.Te6edf3geolocationTb4b4b4.Te6edf3getCurrentPositionTb4b4b4(
Tb4b4b4(Te6edf3positionTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3newMessageTelemetry Tff7b72= Tb4b4b4{
Te6edf3latitudeTff7b72: Te6edf3positionTb4b4b4.Te6edf3coordsTb4b4b4.Te6edf3latitudeTb4b4b4,
Te6edf3longitudeTff7b72: Te6edf3positionTb4b4b4.Te6edf3coordsTb4b4b4.Te6edf3longitudeTb4b4b4,
Te6edf3altitudeTff7b72: Te6edf3positionTb4b4b4.Te6edf3coordsTb4b4b4.Te6edf3altitude Tff7b72|| T79c0ff0Tb4b4b4,
Te6edf3speedTff7b72: Tb4b4b4(Te6edf3positionTb4b4b4.Te6edf3coordsTb4b4b4.Te6edf3speed Tff7b72|| T79c0ff0Tb4b4b4) Tff7b72* T79c0ff3.6Tb4b4b4, T8b949e// m/s to km/h
Te6edf3bearingTff7b72: Te6edf3positionTb4b4b4.Te6edf3coordsTb4b4b4.Te6edf3heading Tff7b72|| T79c0ff0Tb4b4b4,
Te6edf3accuracyTff7b72: Te6edf3positionTb4b4b4.Te6edf3coordsTb4b4b4.Te6edf3accuracy Tff7b72|| T79c0ff0Tb4b4b4,
Te6edf3last_updateTff7b72: Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72/ T79c0ff1000Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3sendMessageTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.location_sent"Tb4b4b4)Tb4b4b4, T79c0ff3000Tb4b4b4, Te6edf3toastKeyTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4(Te6edf3errorTb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(
Ta5d6ff`Ta5d6ffFailed to get location: Tffd700${Te6edf3errorTb4b4b4.Te6edf3messageTffd700}Ta5d6ff. Try setting location manually in Settings.Ta5d6ff`Tb4b4b4,
T79c0ff5000Tb4b4b4,
Te6edf3toastKey
Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4{
Te6edf3enableHighAccuracyTff7b72: Tff7b72trueTb4b4b4,
Te6edf3timeoutTff7b72: T79c0ff30000Tb4b4b4,
Te6edf3maximumAgeTff7b72: T79c0ff0Tb4b4b4,
Tb4b4b4}
Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff`Ta5d6ffError: Tffd700${Te6edf3eTb4b4b4.Te6edf3messageTffd700}Ta5d6ff`Tb4b4b4, T79c0ff5000Tb4b4b4, Te6edf3toastKeyTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3requestLocationTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4) Tff7b72returnTb4b4b4;
T8b949e// Send a telemetry request command
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/lxmf-messages/sendTa5d6ff`Tb4b4b4, Tb4b4b4{
Te6edf3lxmf_messageTff7b72: Tb4b4b4{
Te6edf3destination_hashTff7b72: Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4,
Te6edf3contentTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3fieldsTff7b72: Tb4b4b4{
Te6edf3commandsTff7b72: Tb4b4b4[Tb4b4b4{ Ta5d6ff"0x01"Tff7b72: Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72/ T79c0ff1000Tb4b4b4) Tb4b4b4}Tb4b4b4]Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.location_request_sent"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.failed_send_location_request"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3viewLocationOnMapTb4b4b4(Te6edf3locationTb4b4b4) Tb4b4b4{
T8b949e// navigate to map and center on location
Tff7b72thisTb4b4b4.Te6edf3$routerTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff"map"Tb4b4b4,
Te6edf3queryTff7b72: Tb4b4b4{
Te6edf3latTff7b72: Te6edf3locationTb4b4b4.Te6edf3latitudeTb4b4b4,
Te6edf3lonTff7b72: Te6edf3locationTb4b4b4.Te6edf3longitudeTb4b4b4,
Te6edf3zoomTff7b72: T79c0ff15Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3openMapShareFromParsedTb4b4b4(Te6edf3parsedTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3parsedTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3query Tff7b72= Tb4b4b4{
Te6edf3latTff7b72: Tffa657StringTb4b4b4(Te6edf3parsedTb4b4b4.Te6edf3latTb4b4b4)Tb4b4b4,
Te6edf3lonTff7b72: Tffa657StringTb4b4b4(Te6edf3parsedTb4b4b4.Te6edf3lonTb4b4b4)Tb4b4b4,
Te6edf3zoomTff7b72: Tffa657StringTb4b4b4(Te6edf3parsedTb4b4b4.Te6edf3zoomTb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3parsedTb4b4b4.Te6edf3layersTb4b4b4) Tb4b4b4{
Te6edf3queryTb4b4b4.Te6edf3layers Tff7b72= Te6edf3parsedTb4b4b4.Te6edf3layersTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3parsedTb4b4b4.Te6edf3labelTb4b4b4) Tb4b4b4{
Te6edf3queryTb4b4b4.Te6edf3label Tff7b72= Te6edf3parsedTb4b4b4.Te6edf3labelTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3$routerTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff"map"Tb4b4b4,
Te6edf3queryTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3copyMapShareUriTb4b4b4(Te6edf3uriTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3uriTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72await Te6edf3navigatorTb4b4b4.Te6edf3clipboardTb4b4b4.Te6edf3writeTextTb4b4b4(Te6edf3uriTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.map_link_copied"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.failed_copy_address"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3isTelemetryOnlyTb4b4b4(Te6edf3msgTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3isTelemetryOnlyMessageTb4b4b4(Te6edf3msgTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3hasRenderableContentTb4b4b4(Te6edf3msgTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3messageHasRenderableContentTb4b4b4(Te6edf3msgTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3isImageOnlyMessageTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3computeIsImageOnlyMessageTb4b4b4(Te6edf3chatItemTb4b4b4, Tb4b4b4(Te6edf3itemTb4b4b4) Tb4b4b4=> Tff7b72thisTb4b4b4.Te6edf3shouldHideAutoImageCaptionTb4b4b4(Te6edf3itemTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3toggleTrackingTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3hash Tff7b72= Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/telemetry/tracking/Tffd700${Te6edf3hashTffd700}Ta5d6ff/toggleTa5d6ff`Tb4b4b4, Tb4b4b4{
Te6edf3is_trackingTff7b72: Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3is_trackingTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
T8b949e// Emit event to parent to update peer status
Tff7b72thisTb4b4b4.Te6edf3$emitTb4b4b4(Ta5d6ff"update-peer-tracking"Tb4b4b4, Tb4b4b4{
Te6edf3destination_hashTff7b72: Te6edf3hashTb4b4b4,
Te6edf3is_trackingTff7b72: Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3is_trackingTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Te6edf3responseTb4b4b4.Te6edf3dataTb4b4b4.Te6edf3is_tracking Tff7b72? Ta5d6ff"Live tracking enabled" Tff7b72: Ta5d6ff"Live tracking disabled"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to toggle tracking"Tb4b4b4, Te6edf3eTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to update tracking status"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3formatTimeAgoTff7b72: Tff7b72function Tb4b4b4(Te6edf3datetimeStringTb4b4b4) Tb4b4b4{
T8b949e// Using this.now ensures the computed value updates when the timer ticks
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3now Tff7b72? Te6edf3UtilsTb4b4b4.Te6edf3formatTimeAgoTb4b4b4(Te6edf3datetimeStringTb4b4b4) Tff7b72: Te6edf3UtilsTb4b4b4.Te6edf3formatTimeAgoTb4b4b4(Te6edf3datetimeStringTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3formatDestinationHashTb4b4b4(Te6edf3hashTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3UtilsTb4b4b4.Te6edf3formatDestinationHashTb4b4b4(Te6edf3hashTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3copyHashTb4b4b4(Te6edf3hashTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72await Te6edf3navigatorTb4b4b4.Te6edf3clipboardTb4b4b4.Te6edf3writeTextTb4b4b4(Te6edf3hashTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.hash_copied"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.failed_to_copy_hash"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3formatBytesTff7b72: Tff7b72function Tb4b4b4(Te6edf3bytesTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3UtilsTb4b4b4.Te6edf3formatBytesTb4b4b4(Te6edf3bytesTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3base64ByteLengthTb4b4b4(Te6edf3base64StringTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3base64StringTb4b4b4) Tb4b4b4{
Tff7b72return T79c0ff0Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3padding Tff7b72= Tb4b4b4(Te6edf3base64StringTb4b4b4.Te6edf3matchTb4b4b4(Ta5d6ff/=+$/Tb4b4b4) Tff7b72|| Tb4b4b4[Ta5d6ff""Tb4b4b4]Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4.Te6edf3lengthTb4b4b4;
Tff7b72return Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Tb4b4b4(Te6edf3base64StringTb4b4b4.Te6edf3length Tff7b72* T79c0ff3Tb4b4b4) Tff7b72/ T79c0ff4Tb4b4b4) Tff7b72- Te6edf3paddingTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3formatBase64BytesTb4b4b4(Te6edf3base64StringTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3formatBytesTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3base64ByteLengthTb4b4b4(Te6edf3base64StringTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3openConversationPopoutTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4) Tff7b72returnTb4b4b4;
Tff7b72const Te6edf3destinationHash Tff7b72= Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hash Tff7b72|| Ta5d6ff""Tb4b4b4;
Tff7b72const Te6edf3encodedHash Tff7b72= Tffa657encodeURIComponentTb4b4b4(Te6edf3destinationHashTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3url Tff7b72= Ta5d6ff`Tffd700${Tffa657windowTb4b4b4.Te6edf3locationTb4b4b4.Te6edf3originTffd700}Tffd700${Tffa657windowTb4b4b4.Te6edf3locationTb4b4b4.Te6edf3pathnameTffd700}Ta5d6ff#/popout/messages/Tffd700${Te6edf3encodedHashTffd700}Ta5d6ff`Tb4b4b4;
Tffa657windowTb4b4b4.Te6edf3openTb4b4b4(Te6edf3urlTb4b4b4, Ta5d6ff"_blank"Tb4b4b4, Ta5d6ff"width=960,height=720,noopener"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3onStartCallTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/telephone/call/Tffd700${Tff7b72thisTb4b4b4.Te6edf3selectedPeerTb4b4b4.Te6edf3destination_hashTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3message Tff7b72= Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72?? Ta5d6ff"Failed to start call"Tb4b4b4;
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Te6edf3messageTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3collectImageFilesFromDataTransferTb4b4b4(Te6edf3dtTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3collectImagesFromDataTransferTb4b4b4(Te6edf3dtTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3attachPastedOrDroppedImageFilesTb4b4b4(Te6edf3imageBlobsTb4b4b4, Te6edf3idPrefixTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3t Tff7b72= Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3imageBlobsTb4b4b4.Te6edf3forEachTb4b4b4(Tb4b4b4(Te6edf3fileTb4b4b4, Te6edf3idxTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72let Te6edf3f Tff7b72= Te6edf3fileTb4b4b4;
Tff7b72const Te6edf3ext Tff7b72= Tb4b4b4(Te6edf3fileTb4b4b4.Te6edf3typeTb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff"/"Tb4b4b4)Tb4b4b4[T79c0ff1Tb4b4b4] Tff7b72|| Ta5d6ff"png"Tb4b4b4)Tb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff"jpeg"Tb4b4b4, Ta5d6ff"jpg"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3fileTb4b4b4.Te6edf3name Tff7b72|| Te6edf3fileTb4b4b4.Te6edf3name Tff7b72=== Ta5d6ff"image.png" Tff7b72|| Te6edf3fileTb4b4b4.Te6edf3name Tff7b72=== Ta5d6ff"image.jpeg"Tb4b4b4) Tb4b4b4{
Te6edf3f Tff7b72= Tff7b72new Te6edf3FileTb4b4b4(Tb4b4b4[Te6edf3fileTb4b4b4]Tb4b4b4, Ta5d6ff`Tffd700${Te6edf3idPrefixTffd700}Ta5d6ff-Tffd700${Te6edf3tTffd700}Ta5d6ff-Tffd700${Te6edf3idxTffd700}Ta5d6ff.Tffd700${Te6edf3extTffd700}Ta5d6ff`Tb4b4b4, Tb4b4b4{ Te6edf3typeTff7b72: Te6edf3fileTb4b4b4.Te6edf3type Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3onImageSelectedTb4b4b4(Te6edf3fTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onMessagePasteTb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3imageBlobs Tff7b72= Te6edf3extractClipboardImageFilesTb4b4b4(Te6edf3eventTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3imageBlobsTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Te6edf3eventTb4b4b4.Te6edf3preventDefaultTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3attachPastedOrDroppedImageFilesTb4b4b4(Te6edf3imageBlobsTb4b4b4, Ta5d6ff"paste"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onComposerImageDragOverTb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Te6edf3eventTb4b4b4.Te6edf3preventDefaultTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isTranslatingMessageTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3eventTb4b4b4.Te6edf3dataTransferTb4b4b4) Tb4b4b4{
Te6edf3eventTb4b4b4.Te6edf3dataTransferTb4b4b4.Te6edf3dropEffect Tff7b72= Ta5d6ff"copy"Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3composerImageDropActive Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onComposerImageDragLeaveTb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3el Tff7b72= Te6edf3eventTb4b4b4.Te6edf3currentTargetTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3el Tff7b72&& Te6edf3eventTb4b4b4.Te6edf3relatedTarget Tff7b72&& Te6edf3elTb4b4b4.Te6edf3containsTb4b4b4(Te6edf3eventTb4b4b4.Te6edf3relatedTargetTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3composerImageDropActive Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onComposerImageDropTb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3composerImageDropActive Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isTranslatingMessageTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3dt Tff7b72= Te6edf3eventTb4b4b4.Te6edf3dataTransferTb4b4b4;
Tff7b72const Te6edf3imageFiles Tff7b72= Tff7b72thisTb4b4b4.Te6edf3collectImageFilesFromDataTransferTb4b4b4(Te6edf3dtTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3imageFilesTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3attachPastedOrDroppedImageFilesTb4b4b4(Te6edf3imageFilesTb4b4b4, Ta5d6ff"drop"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3pasteFromClipboardTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3text Tff7b72= Tff7b72await Te6edf3navigatorTb4b4b4.Te6edf3clipboardTb4b4b4.Te6edf3readTextTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3textTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3input Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4[Ta5d6ff"message-input"Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3start Tff7b72= Te6edf3inputTb4b4b4.Te6edf3selectionStartTb4b4b4;
Tff7b72const Te6edf3end Tff7b72= Te6edf3inputTb4b4b4.Te6edf3selectionEndTb4b4b4;
Tff7b72const Te6edf3currentText Tff7b72= Tff7b72thisTb4b4b4.Te6edf3newMessageText Tff7b72|| Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newMessageText Tff7b72= Te6edf3currentTextTb4b4b4.Te6edf3substringTb4b4b4(T79c0ff0Tb4b4b4, Te6edf3startTb4b4b4) Tff7b72+ Te6edf3text Tff7b72+ Te6edf3currentTextTb4b4b4.Te6edf3substringTb4b4b4(Te6edf3endTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3inputTb4b4b4.Te6edf3focusTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3newCursorPos Tff7b72= Te6edf3start Tff7b72+ Te6edf3textTb4b4b4.Te6edf3lengthTb4b4b4;
Te6edf3inputTb4b4b4.Te6edf3setSelectionRangeTb4b4b4(Te6edf3newCursorPosTb4b4b4, Te6edf3newCursorPosTb4b4b4)Tb4b4b4;
T8b949e// adjust height
Te6edf3inputTb4b4b4.Te6edf3styleTb4b4b4.Te6edf3height Tff7b72= Ta5d6ff"auto"Tb4b4b4;
Te6edf3inputTb4b4b4.Te6edf3styleTb4b4b4.Te6edf3height Tff7b72= Tffa657MathTb4b4b4.Te6edf3minTb4b4b4(Te6edf3inputTb4b4b4.Te6edf3scrollHeightTb4b4b4, T79c0ff200Tb4b4b4) Tff7b72+ Ta5d6ff"px"Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3errTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Ta5d6ff"Failed to read clipboard contents: "Tb4b4b4, Te6edf3errTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.failed_read_clipboard"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3onFileInputChangeTff7b72: Tff7b72function Tb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3selectedFiles Tff7b72= Tffa657ArrayTb4b4b4.Tff7b72fromTb4b4b4(Te6edf3eventTb4b4b4.Te6edf3targetTb4b4b4.Te6edf3files Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3file Tff7b72of Te6edf3selectedFilesTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3looksLikeImage Tff7b72=
Te6edf3fileTff7b72?Tb4b4b4.Te6edf3typeTff7b72?Tb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"image/"Tb4b4b4) Tff7b72||
Ta5d6ff/\.(png|jpe?g|gif|webp|bmp|svg|avif|heic|heif)$/iTb4b4b4.Te6edf3testTb4b4b4(Te6edf3fileTff7b72?Tb4b4b4.Te6edf3name Tff7b72|| Ta5d6ff""Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3looksLikeImageTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3onImageSelectedTb4b4b4(Te6edf3fileTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3newMessageFilesTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3fileTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3clearFileInputTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3clearFileInputTff7b72: Tff7b72function Tb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4[Ta5d6ff"file-input"Tb4b4b4]Tb4b4b4.Te6edf3value Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3removeImageAttachmentTb4b4b4(Te6edf3indexTb4b4b4) Tb4b4b4{
T8b949e// remove image
Tff7b72thisTb4b4b4.Te6edf3newMessageImagesTb4b4b4.Te6edf3spliceTb4b4b4(Te6edf3indexTb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newMessageImageUrlsTb4b4b4.Te6edf3spliceTb4b4b4(Te6edf3indexTb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onImageSelectedTff7b72: Tff7b72function Tb4b4b4(Te6edf3imageBlobTb4b4b4) Tb4b4b4{
T8b949e// update selected file
Tff7b72const Te6edf3index Tff7b72= Tff7b72thisTb4b4b4.Te6edf3newMessageImagesTb4b4b4.Te6edf3lengthTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newMessageImagesTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3imageBlobTb4b4b4)Tb4b4b4;
T8b949e// update image url when file is read
Tff7b72const Te6edf3fileReader Tff7b72= Tff7b72new Te6edf3FileReaderTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3fileReaderTb4b4b4.Te6edf3onload Tff7b72= Tb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3newMessageImageUrlsTb4b4b4[Te6edf3indexTb4b4b4] Tff7b72= Te6edf3eventTb4b4b4.Te6edf3targetTb4b4b4.Te6edf3resultTb4b4b4;
Tb4b4b4}Tb4b4b4;
T8b949e// convert image to data url
Te6edf3fileReaderTb4b4b4.Te6edf3readAsDataURLTb4b4b4(Te6edf3imageBlobTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onStickerPickerClickOutsideTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isStickerPickerOpen Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3stickerDropActive Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3gifDropActive Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3toggleStickerPickerTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isStickerPickerOpenTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3loadUserStickersTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3emojiStickerTab Tff7b72= Ta5d6ff"emoji"Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3isStickerPickerOpen Tff7b72= Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isStickerPickerOpenTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onEmojiPickerClickTb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3unicode Tff7b72= Te6edf3eventTff7b72?Tb4b4b4.Te6edf3detailTff7b72?Tb4b4b4.Te6edf3unicodeTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3unicodeTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3insertEmojiAtCaretTb4b4b4(Te6edf3unicodeTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3insertEmojiAtCaretTb4b4b4(Te6edf3emojiTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3ta Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4[Ta5d6ff"message-input"Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3text Tff7b72= Tff7b72thisTb4b4b4.Te6edf3newMessageText Tff7b72?? Ta5d6ff""Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3ta Tff7b72|| Tff7b72typeof Te6edf3taTb4b4b4.Te6edf3selectionStart Tff7b72!== Ta5d6ff"number"Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3newMessageText Tff7b72= Te6edf3text Tff7b72+ Te6edf3emojiTb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3start Tff7b72= Te6edf3taTb4b4b4.Te6edf3selectionStartTb4b4b4;
Tff7b72const Te6edf3end Tff7b72= Te6edf3taTb4b4b4.Te6edf3selectionEnd Tff7b72?? Te6edf3startTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newMessageText Tff7b72= Te6edf3textTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, Te6edf3startTb4b4b4) Tff7b72+ Te6edf3emoji Tff7b72+ Te6edf3textTb4b4b4.Te6edf3sliceTb4b4b4(Te6edf3endTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3el Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4[Ta5d6ff"message-input"Tb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3elTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Te6edf3elTb4b4b4.Te6edf3focusTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3pos Tff7b72= Te6edf3start Tff7b72+ Te6edf3emojiTb4b4b4.Te6edf3lengthTb4b4b4;
Te6edf3elTb4b4b4.Te6edf3setSelectionRangeTb4b4b4(Te6edf3posTb4b4b4, Te6edf3posTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3loadUserStickersTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3r Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/stickers"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3userStickers Tff7b72= Te6edf3rTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3stickers Tff7b72?? Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3userStickers Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3r Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/sticker-packs"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3userStickerPacks Tff7b72= Te6edf3rTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3packs Tff7b72?? Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3userStickerPacks Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3stickerImageUrlTb4b4b4(Te6edf3stickerIdTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff`Ta5d6ff/api/v1/stickers/Tffd700${Te6edf3stickerIdTffd700}Ta5d6ff/imageTa5d6ff`Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onStickerPanelDragOverTb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Te6edf3eventTb4b4b4.Te6edf3preventDefaultTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3eventTb4b4b4.Te6edf3dataTransferTb4b4b4) Tb4b4b4{
Te6edf3eventTb4b4b4.Te6edf3dataTransferTb4b4b4.Te6edf3dropEffect Tff7b72= Ta5d6ff"copy"Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3stickerDropActive Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onStickerPanelDragLeaveTb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3el Tff7b72= Te6edf3eventTb4b4b4.Te6edf3currentTargetTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3el Tff7b72&& Te6edf3eventTb4b4b4.Te6edf3relatedTarget Tff7b72&& Te6edf3elTb4b4b4.Te6edf3containsTb4b4b4(Te6edf3eventTb4b4b4.Te6edf3relatedTargetTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3stickerDropActive Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onStickerPanelDropTb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Te6edf3eventTb4b4b4.Te6edf3preventDefaultTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3stickerDropActive Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72const Te6edf3files Tff7b72= Te6edf3eventTb4b4b4.Te6edf3dataTransferTff7b72?Tb4b4b4.Te6edf3filesTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3filesTff7b72?Tb4b4b4.Te6edf3lengthTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3uploadStickerImageFilesTb4b4b4(Te6edf3filesTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3triggerStickerUploadInputTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3input Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4[Ta5d6ff"sticker-upload-input"Tb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3inputTb4b4b4) Te6edf3inputTb4b4b4.Te6edf3clickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onStickerUploadInputChangeTb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3files Tff7b72= Te6edf3eventTb4b4b4.Te6edf3targetTb4b4b4.Te6edf3filesTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3filesTff7b72?Tb4b4b4.Te6edf3lengthTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3uploadStickerImageFilesTb4b4b4(Te6edf3filesTb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3eventTb4b4b4.Te6edf3targetTb4b4b4.Te6edf3value Tff7b72= Ta5d6ff""Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3mimeToStickerTypeTb4b4b4(Te6edf3mimeTb4b4b4, Te6edf3name Tff7b72= Ta5d6ff""Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3m Tff7b72= Tb4b4b4(Te6edf3mime Tff7b72|| Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff";"Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3map Tff7b72= Tb4b4b4{
Ta5d6ff"image/png"Tff7b72: Ta5d6ff"png"Tb4b4b4,
Ta5d6ff"image/jpeg"Tff7b72: Ta5d6ff"jpeg"Tb4b4b4,
Ta5d6ff"image/jpg"Tff7b72: Ta5d6ff"jpeg"Tb4b4b4,
Ta5d6ff"image/gif"Tff7b72: Ta5d6ff"gif"Tb4b4b4,
Ta5d6ff"image/webp"Tff7b72: Ta5d6ff"webp"Tb4b4b4,
Ta5d6ff"image/bmp"Tff7b72: Ta5d6ff"bmp"Tb4b4b4,
Ta5d6ff"image/x-ms-bmp"Tff7b72: Ta5d6ff"bmp"Tb4b4b4,
Ta5d6ff"video/webm"Tff7b72: Ta5d6ff"webm"Tb4b4b4,
Ta5d6ff"application/x-tgsticker"Tff7b72: Ta5d6ff"tgs"Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3mapTb4b4b4[Te6edf3mTb4b4b4]Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3mapTb4b4b4[Te6edf3mTb4b4b4]Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3ext Tff7b72= Tb4b4b4(Te6edf3nameTb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff"."Tb4b4b4)Tb4b4b4.Te6edf3popTb4b4b4(Tb4b4b4) Tff7b72|| Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3extMap Tff7b72= Tb4b4b4{
Te6edf3pngTff7b72: Ta5d6ff"png"Tb4b4b4,
Te6edf3jpgTff7b72: Ta5d6ff"jpeg"Tb4b4b4,
Te6edf3jpegTff7b72: Ta5d6ff"jpeg"Tb4b4b4,
Te6edf3gifTff7b72: Ta5d6ff"gif"Tb4b4b4,
Te6edf3webpTff7b72: Ta5d6ff"webp"Tb4b4b4,
Te6edf3bmpTff7b72: Ta5d6ff"bmp"Tb4b4b4,
Te6edf3webmTff7b72: Ta5d6ff"webm"Tb4b4b4,
Te6edf3tgsTff7b72: Ta5d6ff"tgs"Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72return Te6edf3extMapTb4b4b4[Te6edf3extTb4b4b4] Tff7b72|| Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3stickerTypeMaxBytesTb4b4b4(Te6edf3typeTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3type Tff7b72=== Ta5d6ff"tgs"Tb4b4b4) Tff7b72return T79c0ff64 Tff7b72* T79c0ff1024Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3type Tff7b72=== Ta5d6ff"webm"Tb4b4b4) Tff7b72return T79c0ff256 Tff7b72* T79c0ff1024Tb4b4b4;
Tff7b72return T79c0ff512 Tff7b72* T79c0ff1024Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3uploadStickerImageFilesTb4b4b4(Te6edf3fileListTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3files Tff7b72= Tffa657ArrayTb4b4b4.Tff7b72fromTb4b4b4(Te6edf3fileList Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3fTb4b4b4) Tb4b4b4=> Te6edf3f Tff7b72&& Te6edf3fTb4b4b4.Te6edf3size Tff7b72> T79c0ff0Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3filesTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3isStickerUploading Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72let Te6edf3added Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72let Te6edf3dup Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72let Te6edf3failed Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3file Tff7b72of Te6edf3filesTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3imageType Tff7b72= Tff7b72thisTb4b4b4.Te6edf3mimeToStickerTypeTb4b4b4(Te6edf3fileTb4b4b4.Te6edf3typeTb4b4b4, Te6edf3fileTb4b4b4.Te6edf3nameTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3imageTypeTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"stickers.unsupported_type"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3failedTff7b72++Tb4b4b4;
Tff7b72continueTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3fileTb4b4b4.Te6edf3size Tff7b72> Tff7b72thisTb4b4b4.Te6edf3stickerTypeMaxBytesTb4b4b4(Te6edf3imageTypeTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"stickers.file_too_large"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3failedTff7b72++Tb4b4b4;
Tff7b72continueTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3buf Tff7b72= Tff7b72await Te6edf3fileTb4b4b4.Te6edf3arrayBufferTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3imageBytes Tff7b72= Te6edf3UtilsTb4b4b4.Te6edf3arrayBufferToBase64Tb4b4b4(Te6edf3bufTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3payload Tff7b72= Tb4b4b4{
Te6edf3image_bytesTff7b72: Te6edf3imageBytesTb4b4b4,
Te6edf3image_typeTff7b72: Te6edf3imageTypeTb4b4b4,
Te6edf3nameTff7b72: Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3imageType Tff7b72=== Ta5d6ff"tgs" Tff7b72|| Te6edf3imageType Tff7b72=== Ta5d6ff"webm"Tb4b4b4) Tb4b4b4{
Te6edf3payloadTb4b4b4.Te6edf3strict Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3activeStickerPackId Tff7b72!== Tff7b72nullTb4b4b4) Tb4b4b4{
Te6edf3payloadTb4b4b4.Te6edf3pack_id Tff7b72= Tff7b72thisTb4b4b4.Te6edf3activeStickerPackIdTb4b4b4;
Tb4b4b4}
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/stickers"Tb4b4b4, Te6edf3payloadTb4b4b4)Tb4b4b4;
Te6edf3addedTff7b72++Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3err Tff7b72= Te6edf3eTff7b72?Tb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3errorTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3err Tff7b72=== Ta5d6ff"duplicate_sticker"Tb4b4b4) Tb4b4b4{
Te6edf3dupTff7b72++Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3failedTff7b72++Tb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3loadUserStickersTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3added Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"stickers.uploaded_count"Tb4b4b4, Tb4b4b4{ Te6edf3countTff7b72: Te6edf3added Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3dup Tff7b72> T79c0ff0 Tff7b72&& Te6edf3added Tff7b72=== T79c0ff0 Tff7b72&& Te6edf3failed Tff7b72=== T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3infoTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"stickers.duplicate"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3dup Tff7b72> T79c0ff0 Tff7b72&& Te6edf3added Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3infoTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"stickers.duplicate"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3failed Tff7b72> T79c0ff0 Tff7b72&& Te6edf3added Tff7b72=== T79c0ff0 Tff7b72&& Te6edf3dup Tff7b72=== T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"stickers.save_failed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isStickerUploading Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3addStickerFromLibraryTb4b4b4(Te6edf3stickerTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3res Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/stickers/Tffd700${Te6edf3stickerTb4b4b4.Te6edf3idTffd700}Ta5d6ff/imageTa5d6ff`Tb4b4b4, Tb4b4b4{
Te6edf3responseTypeTff7b72: Ta5d6ff"blob"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3blob Tff7b72= Te6edf3resTb4b4b4.Te6edf3dataTb4b4b4;
Tff7b72const Te6edf3ext Tff7b72= Te6edf3stickerTb4b4b4.Te6edf3image_type Tff7b72=== Ta5d6ff"jpeg" Tff7b72? Ta5d6ff"jpg" Tff7b72: Te6edf3stickerTb4b4b4.Te6edf3image_typeTb4b4b4;
Tff7b72const Te6edf3mime Tff7b72= Te6edf3blobTb4b4b4.Te6edf3type Tff7b72|| Ta5d6ff`Ta5d6ffimage/Tffd700${Te6edf3stickerTb4b4b4.Te6edf3image_typeTffd700}Ta5d6ff`Tb4b4b4;
Tff7b72const Te6edf3file Tff7b72= Tff7b72new Te6edf3FileTb4b4b4(Tb4b4b4[Te6edf3blobTb4b4b4]Tb4b4b4, Ta5d6ff`Ta5d6ffsticker-Tffd700${Te6edf3stickerTb4b4b4.Te6edf3idTffd700}Ta5d6ff.Tffd700${Te6edf3extTffd700}Ta5d6ff`Tb4b4b4, Tb4b4b4{ Te6edf3typeTff7b72: Te6edf3mime Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3onImageSelectedTb4b4b4(Te6edf3fileTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isStickerPickerOpen Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"stickers.save_failed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3saveMessageImageToStickersTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3messageContextMenuTb4b4b4.Te6edf3show Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72const Te6edf3msg Tff7b72= Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4;
Tff7b72const Te6edf3img Tff7b72= Te6edf3msgTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3imageTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3imgTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72let Te6edf3b64 Tff7b72= Te6edf3imgTb4b4b4.Te6edf3image_bytesTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3b64Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3res Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/lxmf-messages/attachment/Tffd700${Te6edf3msgTb4b4b4.Te6edf3hashTffd700}Ta5d6ff/imageTa5d6ff`Tb4b4b4, Tb4b4b4{
Te6edf3responseTypeTff7b72: Ta5d6ff"arraybuffer"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3b64 Tff7b72= Te6edf3UtilsTb4b4b4.Te6edf3arrayBufferToBase64Tb4b4b4(Te6edf3resTb4b4b4.Te6edf3dataTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"stickers.save_failed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72const Te6edf3imageType Tff7b72= Tffa657StringTb4b4b4(Te6edf3imgTb4b4b4.Te6edf3image_type Tff7b72|| Ta5d6ff"png"Tb4b4b4)Tb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/^image\//Tb4b4b4, Ta5d6ff""Tb4b4b4)Tb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/stickers"Tb4b4b4, Tb4b4b4{
Te6edf3image_bytesTff7b72: Te6edf3b64Tb4b4b4,
Te6edf3image_typeTff7b72: Te6edf3imageTypeTb4b4b4,
Te6edf3source_message_hashTff7b72: Te6edf3msgTb4b4b4.Te6edf3hashTb4b4b4,
Te6edf3nameTff7b72: Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"stickers.saved"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3loadUserStickersTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3err Tff7b72= Te6edf3eTff7b72?Tb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3errorTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3err Tff7b72=== Ta5d6ff"duplicate_sticker"Tb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3infoTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"stickers.duplicate"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"stickers.save_failed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3onGifsTabSelectedTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3emojiStickerTab Tff7b72= Ta5d6ff"gifs"Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3loadUserGifsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3loadUserGifsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3r Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/gifs"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3userGifs Tff7b72= Te6edf3rTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3gifs Tff7b72?? Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3userGifs Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3gifImageUrlTb4b4b4(Te6edf3gifIdTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff`Ta5d6ff/api/v1/gifs/Tffd700${Te6edf3gifIdTffd700}Ta5d6ff/imageTa5d6ff`Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onGifPanelDragOverTb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Te6edf3eventTb4b4b4.Te6edf3preventDefaultTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3eventTb4b4b4.Te6edf3dataTransferTb4b4b4) Tb4b4b4{
Te6edf3eventTb4b4b4.Te6edf3dataTransferTb4b4b4.Te6edf3dropEffect Tff7b72= Ta5d6ff"copy"Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3gifDropActive Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onGifPanelDragLeaveTb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3el Tff7b72= Te6edf3eventTb4b4b4.Te6edf3currentTargetTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3el Tff7b72&& Te6edf3eventTb4b4b4.Te6edf3relatedTarget Tff7b72&& Te6edf3elTb4b4b4.Te6edf3containsTb4b4b4(Te6edf3eventTb4b4b4.Te6edf3relatedTargetTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3gifDropActive Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onGifPanelDropTb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Te6edf3eventTb4b4b4.Te6edf3preventDefaultTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3gifDropActive Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72const Te6edf3files Tff7b72= Te6edf3eventTb4b4b4.Te6edf3dataTransferTff7b72?Tb4b4b4.Te6edf3filesTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3filesTff7b72?Tb4b4b4.Te6edf3lengthTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3uploadGifFilesTb4b4b4(Te6edf3filesTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3triggerGifUploadInputTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3input Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4[Ta5d6ff"gif-upload-input"Tb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3inputTb4b4b4) Te6edf3inputTb4b4b4.Te6edf3clickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onGifUploadInputChangeTb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3files Tff7b72= Te6edf3eventTb4b4b4.Te6edf3targetTb4b4b4.Te6edf3filesTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3filesTff7b72?Tb4b4b4.Te6edf3lengthTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3uploadGifFilesTb4b4b4(Te6edf3filesTb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3eventTb4b4b4.Te6edf3targetTb4b4b4.Te6edf3value Tff7b72= Ta5d6ff""Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3mimeToGifTypeTb4b4b4(Te6edf3mimeTb4b4b4, Te6edf3name Tff7b72= Ta5d6ff""Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3m Tff7b72= Tb4b4b4(Te6edf3mime Tff7b72|| Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff";"Tb4b4b4)Tb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3map Tff7b72= Tb4b4b4{
Ta5d6ff"image/gif"Tff7b72: Ta5d6ff"gif"Tb4b4b4,
Ta5d6ff"image/webp"Tff7b72: Ta5d6ff"webp"Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3mapTb4b4b4[Te6edf3mTb4b4b4]Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3mapTb4b4b4[Te6edf3mTb4b4b4]Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3ext Tff7b72= Tb4b4b4(Te6edf3nameTb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff"."Tb4b4b4)Tb4b4b4.Te6edf3popTb4b4b4(Tb4b4b4) Tff7b72|| Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3extMap Tff7b72= Tb4b4b4{ Te6edf3gifTff7b72: Ta5d6ff"gif"Tb4b4b4, Te6edf3webpTff7b72: Ta5d6ff"webp" Tb4b4b4}Tb4b4b4;
Tff7b72return Te6edf3extMapTb4b4b4[Te6edf3extTb4b4b4] Tff7b72|| Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3uploadGifFilesTb4b4b4(Te6edf3fileListTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3maxBytes Tff7b72= T79c0ff5 Tff7b72* T79c0ff1024 Tff7b72* T79c0ff1024Tb4b4b4;
Tff7b72const Te6edf3files Tff7b72= Tffa657ArrayTb4b4b4.Tff7b72fromTb4b4b4(Te6edf3fileList Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4)Tb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3fTb4b4b4) Tb4b4b4=> Te6edf3f Tff7b72&& Te6edf3fTb4b4b4.Te6edf3size Tff7b72> T79c0ff0Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3filesTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3isGifUploading Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72let Te6edf3added Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72let Te6edf3dup Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72let Te6edf3failed Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3file Tff7b72of Te6edf3filesTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3fileTb4b4b4.Te6edf3size Tff7b72> Te6edf3maxBytesTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"gifs.file_too_large"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3failedTff7b72++Tb4b4b4;
Tff7b72continueTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3imageType Tff7b72= Tff7b72thisTb4b4b4.Te6edf3mimeToGifTypeTb4b4b4(Te6edf3fileTb4b4b4.Te6edf3typeTb4b4b4, Te6edf3fileTb4b4b4.Te6edf3nameTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3imageTypeTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"gifs.unsupported_type"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3failedTff7b72++Tb4b4b4;
Tff7b72continueTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3buf Tff7b72= Tff7b72await Te6edf3fileTb4b4b4.Te6edf3arrayBufferTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3imageBytes Tff7b72= Te6edf3UtilsTb4b4b4.Te6edf3arrayBufferToBase64Tb4b4b4(Te6edf3bufTb4b4b4)Tb4b4b4;
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/gifs"Tb4b4b4, Tb4b4b4{
Te6edf3image_bytesTff7b72: Te6edf3imageBytesTb4b4b4,
Te6edf3image_typeTff7b72: Te6edf3imageTypeTb4b4b4,
Te6edf3nameTff7b72: Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3addedTff7b72++Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3err Tff7b72= Te6edf3eTff7b72?Tb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3errorTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3err Tff7b72=== Ta5d6ff"duplicate_gif"Tb4b4b4) Tb4b4b4{
Te6edf3dupTff7b72++Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3failedTff7b72++Tb4b4b4;
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3loadUserGifsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3added Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"gifs.uploaded_count"Tb4b4b4, Tb4b4b4{ Te6edf3countTff7b72: Te6edf3added Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3dup Tff7b72> T79c0ff0 Tff7b72&& Te6edf3added Tff7b72=== T79c0ff0 Tff7b72&& Te6edf3failed Tff7b72=== T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3infoTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"gifs.duplicate"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3dup Tff7b72> T79c0ff0 Tff7b72&& Te6edf3added Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3infoTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"gifs.duplicate"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3failed Tff7b72> T79c0ff0 Tff7b72&& Te6edf3added Tff7b72=== T79c0ff0 Tff7b72&& Te6edf3dup Tff7b72=== T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"gifs.save_failed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3isGifUploading Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3addGifFromLibraryTb4b4b4(Te6edf3gifTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3res Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/gifs/Tffd700${Te6edf3gifTb4b4b4.Te6edf3idTffd700}Ta5d6ff/imageTa5d6ff`Tb4b4b4, Tb4b4b4{
Te6edf3responseTypeTff7b72: Ta5d6ff"blob"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3blob Tff7b72= Te6edf3resTb4b4b4.Te6edf3dataTb4b4b4;
Tff7b72const Te6edf3ext Tff7b72= Te6edf3gifTb4b4b4.Te6edf3image_typeTb4b4b4;
Tff7b72const Te6edf3mime Tff7b72= Te6edf3blobTb4b4b4.Te6edf3type Tff7b72|| Ta5d6ff`Ta5d6ffimage/Tffd700${Te6edf3gifTb4b4b4.Te6edf3image_typeTffd700}Ta5d6ff`Tb4b4b4;
Tff7b72const Te6edf3file Tff7b72= Tff7b72new Te6edf3FileTb4b4b4(Tb4b4b4[Te6edf3blobTb4b4b4]Tb4b4b4, Ta5d6ff`Ta5d6ffgif-Tffd700${Te6edf3gifTb4b4b4.Te6edf3idTffd700}Ta5d6ff.Tffd700${Te6edf3extTffd700}Ta5d6ff`Tb4b4b4, Tb4b4b4{ Te6edf3typeTff7b72: Te6edf3mime Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3onImageSelectedTb4b4b4(Te6edf3fileTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isStickerPickerOpen Tff7b72= Tff7b72falseTb4b4b4;
Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/gifs/Tffd700${Te6edf3gifTb4b4b4.Te6edf3idTffd700}Ta5d6ff/useTa5d6ff`Tb4b4b4)Tb4b4b4.Tff7b72catchTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3idx Tff7b72= Tff7b72thisTb4b4b4.Te6edf3userGifsTb4b4b4.Te6edf3findIndexTb4b4b4(Tb4b4b4(Te6edf3gTb4b4b4) Tb4b4b4=> Te6edf3gTb4b4b4.Te6edf3id Tff7b72=== Te6edf3gifTb4b4b4.Te6edf3idTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3idx Tff7b72>= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3updated Tff7b72= Tb4b4b4{ Tb4b4b4...Tff7b72thisTb4b4b4.Te6edf3userGifsTb4b4b4[Te6edf3idxTb4b4b4]Tb4b4b4, Te6edf3usage_countTff7b72: Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3userGifsTb4b4b4[Te6edf3idxTb4b4b4]Tb4b4b4.Te6edf3usage_count Tff7b72|| T79c0ff0Tb4b4b4) Tff7b72+ T79c0ff1 Tb4b4b4}Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3userGifsTb4b4b4.Te6edf3spliceTb4b4b4(Te6edf3idxTb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4;
Tff7b72let Te6edf3inserted Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< Tff7b72thisTb4b4b4.Te6edf3userGifsTb4b4b4.Te6edf3lengthTb4b4b4; Te6edf3iTff7b72++Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3userGifsTb4b4b4[Te6edf3iTb4b4b4]Tb4b4b4.Te6edf3usage_count Tff7b72|| T79c0ff0Tb4b4b4) Tff7b72<= Te6edf3updatedTb4b4b4.Te6edf3usage_countTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3userGifsTb4b4b4.Te6edf3spliceTb4b4b4(Te6edf3iTb4b4b4, T79c0ff0Tb4b4b4, Te6edf3updatedTb4b4b4)Tb4b4b4;
Te6edf3inserted Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72breakTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3insertedTb4b4b4) Tff7b72thisTb4b4b4.Te6edf3userGifsTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3updatedTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"gifs.save_failed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3canSaveMessageImageAsGifTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3img Tff7b72= Te6edf3chatItemTff7b72?Tb4b4b4.Te6edf3lxmf_messageTff7b72?Tb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3imageTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3imgTb4b4b4) Tff7b72return Tff7b72falseTb4b4b4;
Tff7b72const Te6edf3t Tff7b72= Tffa657StringTb4b4b4(Te6edf3imgTb4b4b4.Te6edf3image_type Tff7b72|| Ta5d6ff""Tb4b4b4)
Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)
Tb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/^image\//Tb4b4b4, Ta5d6ff""Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3t Tff7b72=== Ta5d6ff"gif" Tff7b72|| Te6edf3t Tff7b72=== Ta5d6ff"webp"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3saveMessageImageToGifsTb4b4b4(Te6edf3chatItemTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3messageContextMenuTb4b4b4.Te6edf3show Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72const Te6edf3msg Tff7b72= Te6edf3chatItemTb4b4b4.Te6edf3lxmf_messageTb4b4b4;
Tff7b72const Te6edf3img Tff7b72= Te6edf3msgTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3imageTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3imgTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72let Te6edf3b64 Tff7b72= Te6edf3imgTb4b4b4.Te6edf3image_bytesTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3b64Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3res Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/lxmf-messages/attachment/Tffd700${Te6edf3msgTb4b4b4.Te6edf3hashTffd700}Ta5d6ff/imageTa5d6ff`Tb4b4b4, Tb4b4b4{
Te6edf3responseTypeTff7b72: Ta5d6ff"arraybuffer"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3b64 Tff7b72= Te6edf3UtilsTb4b4b4.Te6edf3arrayBufferToBase64Tb4b4b4(Te6edf3resTb4b4b4.Te6edf3dataTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3consoleTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"gifs.save_failed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72const Te6edf3imageType Tff7b72= Tffa657StringTb4b4b4(Te6edf3imgTb4b4b4.Te6edf3image_type Tff7b72|| Ta5d6ff"gif"Tb4b4b4)Tb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/^image\//Tb4b4b4, Ta5d6ff""Tb4b4b4)Tb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/gifs"Tb4b4b4, Tb4b4b4{
Te6edf3image_bytesTff7b72: Te6edf3b64Tb4b4b4,
Te6edf3image_typeTff7b72: Te6edf3imageTypeTb4b4b4,
Te6edf3source_message_hashTff7b72: Te6edf3msgTb4b4b4.Te6edf3hashTb4b4b4,
Te6edf3nameTff7b72: Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"gifs.saved"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3loadUserGifsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3err Tff7b72= Te6edf3eTff7b72?Tb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3errorTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3err Tff7b72=== Ta5d6ff"duplicate_gif"Tb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3infoTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"gifs.duplicate"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"gifs.save_failed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3startRecordingAudioAttachmentTb4b4b4(Te6edf3argsTb4b4b4) Tb4b4b4{
T8b949e// do nothing if already recording
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isRecordingAudioAttachmentTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
T8b949e// ask user to confirm recording new audio attachment, if an existing audio attachment exists
Tff7b72if Tb4b4b4(
Tff7b72thisTb4b4b4.Te6edf3newMessageAudio Tff7b72&&
Tff7b72!Tb4b4b4(Tff7b72await Te6edf3DialogUtilsTb4b4b4.Te6edf3confirmTb4b4b4(
Ta5d6ff"An audio recording is already attached. A new recording will replace it. Do you want to continue?"
Tb4b4b4)Tb4b4b4)
Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
T8b949e// handle selected codec
Tff7b72switch Tb4b4b4(Te6edf3argsTb4b4b4.Te6edf3codecTb4b4b4) Tb4b4b4{
Tff7b72case Ta5d6ff"codec2"Tff7b72: Tb4b4b4{
T8b949e// start recording microphone
Tff7b72thisTb4b4b4.Te6edf3audioAttachmentMicrophoneRecorderCodec Tff7b72= Ta5d6ff"codec2"Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3audioAttachmentMicrophoneRecorder Tff7b72= Tff7b72new Te6edf3Codec2MicrophoneRecorderTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3audioAttachmentMicrophoneRecorderTb4b4b4.Te6edf3codec2Mode Tff7b72= Te6edf3argsTb4b4b4.Te6edf3modeTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3audioAttachmentRecordingStartedAt Tff7b72= Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isRecordingAudioAttachment Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3audioAttachmentMicrophoneRecorderTb4b4b4.Te6edf3startTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// update recording time in ui every second
Tff7b72thisTb4b4b4.Te6edf3audioAttachmentRecordingDuration Tff7b72= Te6edf3UtilsTb4b4b4.Te6edf3formatMinutesSecondsTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3audioAttachmentRecordingTimer Tff7b72= Te6edf3setIntervalTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3recordingDurationMillis Tff7b72= Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72- Tff7b72thisTb4b4b4.Te6edf3audioAttachmentRecordingStartedAtTb4b4b4;
Tff7b72const Te6edf3recordingDurationSeconds Tff7b72= Te6edf3recordingDurationMillis Tff7b72/ T79c0ff1000Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3audioAttachmentRecordingDuration Tff7b72= Te6edf3UtilsTb4b4b4.Te6edf3formatMinutesSecondsTb4b4b4(Te6edf3recordingDurationSecondsTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4, T79c0ff1000Tb4b4b4)Tb4b4b4;
T8b949e// alert if failed to start recording
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isRecordingAudioAttachmentTb4b4b4) Tb4b4b4{
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3buildAudioRecordingFailureMessageTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72breakTb4b4b4;
Tb4b4b4}
Tff7b72case Ta5d6ff"opus"Tff7b72: Tb4b4b4{
T8b949e// start recording microphone
Tff7b72thisTb4b4b4.Te6edf3audioAttachmentMicrophoneRecorderCodec Tff7b72= Ta5d6ff"opus"Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3audioAttachmentMicrophoneRecorder Tff7b72= Tff7b72new Te6edf3MicrophoneRecorderTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3audioAttachmentRecordingStartedAt Tff7b72= Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isRecordingAudioAttachment Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3audioAttachmentMicrophoneRecorderTb4b4b4.Te6edf3startTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// update recording time in ui every second
Tff7b72thisTb4b4b4.Te6edf3audioAttachmentRecordingDuration Tff7b72= Te6edf3UtilsTb4b4b4.Te6edf3formatMinutesSecondsTb4b4b4(T79c0ff0Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3audioAttachmentRecordingTimer Tff7b72= Te6edf3setIntervalTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3recordingDurationMillis Tff7b72= Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72- Tff7b72thisTb4b4b4.Te6edf3audioAttachmentRecordingStartedAtTb4b4b4;
Tff7b72const Te6edf3recordingDurationSeconds Tff7b72= Te6edf3recordingDurationMillis Tff7b72/ T79c0ff1000Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3audioAttachmentRecordingDuration Tff7b72= Te6edf3UtilsTb4b4b4.Te6edf3formatMinutesSecondsTb4b4b4(Te6edf3recordingDurationSecondsTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4, T79c0ff1000Tb4b4b4)Tb4b4b4;
T8b949e// alert if failed to start recording
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isRecordingAudioAttachmentTb4b4b4) Tb4b4b4{
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3buildAudioRecordingFailureMessageTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72breakTb4b4b4;
Tb4b4b4}
Tff7b72defaultTff7b72: Tb4b4b4{
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Ta5d6ff`Ta5d6ffUnhandled microphone recorder codec: Tffd700${Te6edf3argsTb4b4b4.Te6edf3codecTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72breakTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3stopRecordingAudioAttachmentTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// clear audio recording timer
Te6edf3clearIntervalTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3audioAttachmentRecordingTimerTb4b4b4)Tb4b4b4;
T8b949e// do nothing if not recording
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isRecordingAudioAttachmentTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
T8b949e// stop recording microphone and get audio
Tff7b72thisTb4b4b4.Te6edf3isRecordingAudioAttachment Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72const Te6edf3audio Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3audioAttachmentMicrophoneRecorderTb4b4b4.Te6edf3stopTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// handle audio based on codec
Tff7b72switch Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3audioAttachmentMicrophoneRecorderCodecTb4b4b4) Tb4b4b4{
Tff7b72case Ta5d6ff"codec2"Tff7b72: Tb4b4b4{
T8b949e// do nothing if no audio was provided
Tff7b72if Tb4b4b4(Te6edf3audioTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
T8b949e// decode codec2 audio back to wav so we can show a preview audio player before user sends it
Tff7b72const Te6edf3codec2Mode Tff7b72= Tff7b72thisTb4b4b4.Te6edf3audioAttachmentMicrophoneRecorderTb4b4b4.Te6edf3codec2ModeTb4b4b4;
Tff7b72const Te6edf3decoded Tff7b72= Tff7b72await Te6edf3Codec2LibTb4b4b4.Te6edf3runDecodeTb4b4b4(Te6edf3codec2ModeTb4b4b4, Tff7b72new Tffa657Uint8ArrayTb4b4b4(Te6edf3audioTb4b4b4)Tb4b4b4)Tb4b4b4;
T8b949e// convert decoded codec2 to wav audio and create a blob
Tff7b72const Te6edf3wavAudio Tff7b72= Tff7b72await Te6edf3Codec2LibTb4b4b4.Te6edf3rawToWavTb4b4b4(Te6edf3decodedTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3wavBlob Tff7b72= Tff7b72new Te6edf3BlobTb4b4b4(Tb4b4b4[Te6edf3wavAudioTb4b4b4]Tb4b4b4, Tb4b4b4{
Te6edf3typeTff7b72: Ta5d6ff"audio/wav"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
T8b949e// determine audio mode
Tff7b72var Te6edf3audioMode Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72switch Tb4b4b4(Te6edf3codec2ModeTb4b4b4) Tb4b4b4{
Tff7b72case Ta5d6ff"1200"Tff7b72: Tb4b4b4{
Te6edf3audioMode Tff7b72= T79c0ff0x04Tb4b4b4; T8b949e// LXMF.AM_CODEC2_1200
Tff7b72breakTb4b4b4;
Tb4b4b4}
Tff7b72case Ta5d6ff"3200"Tff7b72: Tb4b4b4{
Te6edf3audioMode Tff7b72= T79c0ff0x09Tb4b4b4; T8b949e// LXMF.AM_CODEC2_3200
Tff7b72breakTb4b4b4;
Tb4b4b4}
Tff7b72defaultTff7b72: Tb4b4b4{
Te6edf3DialogUtilsTb4b4b4.Te6edf3alertTb4b4b4(Ta5d6ff`Ta5d6ffUnhandled microphone recorder codec2Mode: Tffd700${Te6edf3codec2ModeTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tb4b4b4}
T8b949e// update message audio attachment
Tff7b72thisTb4b4b4.Te6edf3newMessageAudio Tff7b72= Tb4b4b4{
Te6edf3audio_modeTff7b72: Te6edf3audioModeTb4b4b4,
Te6edf3audio_blobTff7b72: Tff7b72new Te6edf3BlobTb4b4b4(Tb4b4b4[Te6edf3audioTb4b4b4]Tb4b4b4)Tb4b4b4,
Te6edf3audio_preview_urlTff7b72: Te6edf3URLTb4b4b4.Te6edf3createObjectURLTb4b4b4(Te6edf3wavBlobTb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72breakTb4b4b4;
Tb4b4b4}
Tff7b72case Ta5d6ff"opus"Tff7b72: Tb4b4b4{
T8b949e// do nothing if no audio was provided
Tff7b72if Tb4b4b4(Te6edf3audioTb4b4b4.Te6edf3size Tff7b72=== T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
T8b949e// update message audio attachment
Tff7b72thisTb4b4b4.Te6edf3newMessageAudio Tff7b72= Tb4b4b4{
Te6edf3audio_modeTff7b72: T79c0ff0x10Tb4b4b4, T8b949e// LXMF.AM_OPUS_OGG
Te6edf3audio_blobTff7b72: Te6edf3audioTb4b4b4, T8b949e// opus microphone recorder returns a blob
Te6edf3audio_preview_urlTff7b72: Te6edf3URLTb4b4b4.Te6edf3createObjectURLTb4b4b4(Te6edf3audioTb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72breakTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3removeAudioAttachmentTb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// remove audio
Tff7b72thisTb4b4b4.Te6edf3newMessageAudio Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3buildAudioRecordingFailureMessageTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3navigatorTff7b72?Tb4b4b4.Te6edf3mediaDevices Tff7b72|| Tff7b72typeof Te6edf3navigatorTb4b4b4.Te6edf3mediaDevicesTb4b4b4.Te6edf3getUserMedia Tff7b72!== Ta5d6ff"function"Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff`Tffd700${Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.failed_start_recording"Tb4b4b4)Tffd700}Ta5d6ff. Tffd700${Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.failed_start_recording_help_mediadevices"Tb4b4b4)Tffd700}Ta5d6ff`Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3AudioContextCtor Tff7b72= Tffa657globalThisTb4b4b4.Te6edf3AudioContext Tff7b72|| Tffa657globalThisTb4b4b4.Te6edf3webkitAudioContextTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72typeof Te6edf3AudioContextCtor Tff7b72!== Ta5d6ff"function"Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff`Tffd700${Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.failed_start_recording"Tb4b4b4)Tffd700}Ta5d6ff. Tffd700${Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.failed_start_recording_help_web_audio"Tb4b4b4)Tffd700}Ta5d6ff`Tb4b4b4;
Tb4b4b4}
Tff7b72let Te6edf3probe Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72try Tb4b4b4{
Te6edf3probe Tff7b72= Tff7b72new Te6edf3AudioContextCtorTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3probeTb4b4b4.Te6edf3audioWorklet Tff7b72|| Tff7b72typeof Te6edf3probeTb4b4b4.Te6edf3audioWorkletTb4b4b4.Te6edf3addModule Tff7b72!== Ta5d6ff"function"Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff`Tffd700${Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.failed_start_recording"Tb4b4b4)Tffd700}Ta5d6ff. Tffd700${Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.failed_start_recording_help_audio_worklet"Tb4b4b4)Tffd700}Ta5d6ff`Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72return Ta5d6ff`Tffd700${Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.failed_start_recording"Tb4b4b4)Tffd700}Ta5d6ff. Tffd700${Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.failed_start_recording_help_web_audio"Tb4b4b4)Tffd700}Ta5d6ff`Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3probe Tff7b72&& Tff7b72typeof Te6edf3probeTb4b4b4.Te6edf3close Tff7b72=== Ta5d6ff"function"Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3closed Tff7b72= Te6edf3probeTb4b4b4.Te6edf3closeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3closed Tff7b72&& Tff7b72typeof Te6edf3closedTb4b4b4.Tff7b72catch Tff7b72=== Ta5d6ff"function"Tb4b4b4) Tb4b4b4{
Tff7b72void Te6edf3closedTb4b4b4.Tff7b72catchTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4{
T8b949e// ignore
Tb4b4b4}
Tb4b4b4}
Tff7b72return Ta5d6ff`Tffd700${Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.failed_start_recording"Tb4b4b4)Tffd700}Ta5d6ff. Tffd700${Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.failed_start_recording_help_permission"Tb4b4b4)Tffd700}Ta5d6ff`Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3removeFileAttachmentTff7b72: Tff7b72function Tb4b4b4(Te6edf3fileTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3newMessageFiles Tff7b72= Tff7b72thisTb4b4b4.Te6edf3newMessageFilesTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3newMessageFileTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72return Te6edf3newMessageFile Tff7b72!== Te6edf3fileTb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3addNewLineTff7b72: Tff7b72function Tb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// get cursor position for message input
Tff7b72const Te6edf3input Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4[Ta5d6ff"message-input"Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3cursorPosition Tff7b72= Te6edf3inputTb4b4b4.Te6edf3selectionStartTb4b4b4;
T8b949e// insert a newline character after the cursor position
Tff7b72const Te6edf3text Tff7b72= Tff7b72thisTb4b4b4.Te6edf3newMessageTextTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3newMessageText Tff7b72= Te6edf3textTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, Te6edf3cursorPositionTb4b4b4) Tff7b72+ Ta5d6ff"\n" Tff7b72+ Te6edf3textTb4b4b4.Te6edf3sliceTb4b4b4(Te6edf3cursorPositionTb4b4b4)Tb4b4b4;
T8b949e// move cursor to the position after the added newline
Tff7b72const Te6edf3newCursorPosition Tff7b72= Te6edf3cursorPosition Tff7b72+ T79c0ff1Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3$nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Te6edf3inputTb4b4b4.Te6edf3selectionStart Tff7b72= Te6edf3newCursorPositionTb4b4b4;
Te6edf3inputTb4b4b4.Te6edf3selectionEnd Tff7b72= Te6edf3newCursorPositionTb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onEnterPressedTff7b72: Tff7b72function Tb4b4b4(Tb4b4b4) Tb4b4b4{
T8b949e// add new line on mobile
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isMobileTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3addNewLineTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
T8b949e// send message on desktop
Tff7b72thisTb4b4b4.Te6edf3sendMessageTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onShiftEnterPressedTff7b72: Tff7b72function Tb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3addNewLineTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3addFilesToMessageTff7b72: Tff7b72function Tb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4[Ta5d6ff"file-input"Tb4b4b4]Tb4b4b4.Te6edf3clickTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3findConversationTff7b72: Tff7b72function Tb4b4b4(Te6edf3destinationHashTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3conversationsTb4b4b4.Te6edf3findTb4b4b4(Tb4b4b4(Te6edf3conversationTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72return Te6edf3conversationTb4b4b4.Te6edf3destination_hash Tff7b72=== Te6edf3destinationHashTb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3markConversationAsReadTb4b4b4(Te6edf3conversationTb4b4b4) Tb4b4b4{
T8b949e// manually mark conversation read in memory to avoid delay updating ui
Te6edf3conversationTb4b4b4.Te6edf3is_unread Tff7b72= Tff7b72falseTb4b4b4;
T8b949e// mark conversation as read on server
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/lxmf/conversations/Tffd700${Te6edf3conversationTb4b4b4.Te6edf3destination_hashTffd700}Ta5d6ff/mark-as-readTa5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
T8b949e// do nothing if failed to mark as read
Te6edf3consoleTb4b4b4.Te6edf3logTb4b4b4(Te6edf3eTb4b4b4)Tb4b4b4;
Tb4b4b4}
T8b949e// reload conversations
Tff7b72thisTb4b4b4.Te6edf3$emitTb4b4b4(Ta5d6ff"reload-conversations"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3toggleSentMessageInfoTff7b72: Tff7b72function Tb4b4b4(Te6edf3messageHashTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3expandedMessageInfo Tff7b72=== Te6edf3messageHashTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3expandedMessageInfo Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3expandedMessageInfo Tff7b72= Te6edf3messageHashTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3toggleReceivedMessageInfoTff7b72: Tff7b72function Tb4b4b4(Te6edf3messageHashTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3expandedMessageInfo Tff7b72=== Te6edf3messageHashTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3expandedMessageInfo Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3expandedMessageInfo Tff7b72= Te6edf3messageHashTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3getMessageInfoLinesTff7b72: Tff7b72function Tb4b4b4(Te6edf3lxmfMessageTb4b4b4, Te6edf3isOutboundTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3lines Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3isOutboundTb4b4b4) Tb4b4b4{
Te6edf3linesTb4b4b4.Te6edf3pushTb4b4b4(Ta5d6ff`Ta5d6ffCreated: Tffd700${Te6edf3UtilsTb4b4b4.Te6edf3convertUnixMillisToLocalDateTimeStringTb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3timestamp Tff7b72* T79c0ff1000Tb4b4b4)Tffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3linesTb4b4b4.Te6edf3pushTb4b4b4(Ta5d6ff`Ta5d6ffSent: Tffd700${Te6edf3UtilsTb4b4b4.Te6edf3convertUnixMillisToLocalDateTimeStringTb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3timestamp Tff7b72* T79c0ff1000Tb4b4b4)Tffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Te6edf3linesTb4b4b4.Te6edf3pushTb4b4b4(Ta5d6ff`Ta5d6ffReceived: Tffd700${Te6edf3UtilsTb4b4b4.Te6edf3convertDateTimeToLocalDateTimeStringTb4b4b4(Tff7b72new Tffa657DateTb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3created_atTb4b4b4)Tb4b4b4)Tffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Te6edf3linesTb4b4b4.Te6edf3pushTb4b4b4(Ta5d6ff`Ta5d6ffMethod: Tffd700${Te6edf3lxmfMessageTb4b4b4.Te6edf3method Tff7b72?? Ta5d6ff"unknown"Tffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3audioTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3audioSize Tff7b72=
Te6edf3lxmfMessageTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3audioTb4b4b4.Te6edf3audio_size Tff7b72??
Tb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3audioTb4b4b4.Te6edf3audio_bytes Tff7b72? Te6edf3atobTb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3audioTb4b4b4.Te6edf3audio_bytesTb4b4b4)Tb4b4b4.Te6edf3length Tff7b72: T79c0ff0Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3audioSize Tff7b72> T79c0ff0Tb4b4b4) Te6edf3linesTb4b4b4.Te6edf3pushTb4b4b4(Ta5d6ff`Ta5d6ffAudio Attachment: Tffd700${Tff7b72thisTb4b4b4.Te6edf3formatBytesTb4b4b4(Te6edf3audioSizeTb4b4b4)Tffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3imageTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3imageSize Tff7b72=
Te6edf3lxmfMessageTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3imageTb4b4b4.Te6edf3image_size Tff7b72??
Tb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3imageTb4b4b4.Te6edf3image_bytes Tff7b72? Te6edf3atobTb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3imageTb4b4b4.Te6edf3image_bytesTb4b4b4)Tb4b4b4.Te6edf3length Tff7b72: T79c0ff0Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3imageSize Tff7b72> T79c0ff0Tb4b4b4) Te6edf3linesTb4b4b4.Te6edf3pushTb4b4b4(Ta5d6ff`Ta5d6ffImage Attachment: Tffd700${Tff7b72thisTb4b4b4.Te6edf3formatBytesTb4b4b4(Te6edf3imageSizeTb4b4b4)Tffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3fieldsTff7b72?Tb4b4b4.Te6edf3file_attachmentsTb4b4b4) Tb4b4b4{
Tff7b72let Te6edf3filesLength Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72const Te6edf3fileAttachments Tff7b72= Te6edf3lxmfMessageTb4b4b4.Te6edf3fieldsTb4b4b4.Te6edf3file_attachmentsTb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3fileAttachment Tff7b72of Te6edf3fileAttachmentsTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3fileBytesLength Tff7b72=
Te6edf3fileAttachmentTb4b4b4.Te6edf3file_size Tff7b72??
Tb4b4b4(Te6edf3fileAttachmentTb4b4b4.Te6edf3file_bytes Tff7b72? Te6edf3atobTb4b4b4(Te6edf3fileAttachmentTb4b4b4.Te6edf3file_bytesTb4b4b4)Tb4b4b4.Te6edf3length Tff7b72: T79c0ff0Tb4b4b4)Tb4b4b4;
Te6edf3filesLength Tff7b72+= Te6edf3fileBytesLengthTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3filesLength Tff7b72> T79c0ff0Tb4b4b4) Te6edf3linesTb4b4b4.Te6edf3pushTb4b4b4(Ta5d6ff`Ta5d6ffFile Attachments: Tffd700${Tff7b72thisTb4b4b4.Te6edf3formatBytesTb4b4b4(Te6edf3filesLengthTb4b4b4)Tffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3isOutboundTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3quality Tff7b72!= Tff7b72nullTb4b4b4) Tb4b4b4{
Te6edf3linesTb4b4b4.Te6edf3pushTb4b4b4(Ta5d6ff`Ta5d6ffSignal Quality: Tffd700${Te6edf3lxmfMessageTb4b4b4.Te6edf3qualityTffd700}Ta5d6ff%Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3rssi Tff7b72!= Tff7b72nullTb4b4b4) Tb4b4b4{
Te6edf3linesTb4b4b4.Te6edf3pushTb4b4b4(Ta5d6ff`Ta5d6ffRSSI: Tffd700${Te6edf3lxmfMessageTb4b4b4.Te6edf3rssiTffd700}Ta5d6ffdBmTa5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3lxmfMessageTb4b4b4.Te6edf3snr Tff7b72!= Tff7b72nullTb4b4b4) Tb4b4b4{
Te6edf3linesTb4b4b4.Te6edf3pushTb4b4b4(Ta5d6ff`Ta5d6ffSNR: Tffd700${Te6edf3lxmfMessageTb4b4b4.Te6edf3snrTffd700}Ta5d6ffdBTa5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72return Te6edf3linesTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4<Tb4b4b4/Tff7b72scriptTb4b4b4>
Tb4b4b4<Tff7b72style Te6edf3scopedTb4b4b4>
Tb4b4b4.T56d364attachment-card Tb4b4b4{
@apply relative flex gap-3 border border-gray-200 Te6edf3darkTb4b4b4:Tff7b72borderTff7b72-Te6edf3zinc-800 Te6edf3rounded-2xl Te6edf3p-3 Te6edf3shadow-smTb4b4b4;
Tff7b72background-colorTb4b4b4: Tff7b72whiteTb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364dark Tb4b4b4.T56d364attachment-card Tb4b4b4{
Tff7b72background-colorTb4b4b4: Tffa657rgbTb4b4b4(T79c0ff24 T79c0ff24 T79c0ff27Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364attachment-card__preview Tb4b4b4{
@apply w-24 h-24 overflow-hidden rounded-xl bg-gray-100 Te6edf3darkTb4b4b4:Te6edf3bg-zinc-800 Tff7b72cursorTff7b72-Tff7b72pointerTb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364attachment-card__body Tb4b4b4{
@apply flex-1Tb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364attachment-card__title Tb4b4b4{
@apply text-sm font-semibold text-gray-800 Te6edf3darkTb4b4b4:Tff7b72textTff7b72-Tff7b72grayT79c0ff-100Tb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364attachment-card__meta Tb4b4b4{
@apply text-xs text-gray-500 Te6edf3darkTb4b4b4:Tff7b72textTff7b72-Tff7b72grayT79c0ff-400Tb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364attachment-card__remove Tb4b4b4{
@apply absolute top-2 right-2 inline-flex items-center justify-center w-6 h-6 rounded-full bg-gray-200 Te6edf3darkTb4b4b4:Te6edf3bg-zinc-800 Tff7b72textTff7b72-Tff7b72grayT79c0ff-600 Te6edf3darkTff7b72:Tff7b72textTff7b72-Tff7b72grayT79c0ff-200 Te6edf3hoverTff7b72:Te6edf3bg-red-100 Te6edf3hoverTff7b72:Tff7b72textTff7b72-Tff7b72redT79c0ff-600 Te6edf3darkTff7b72:Te6edf3hoverTff7b72:Te6edf3bg-red-900Tff7b72/T79c0ff40Tb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364attachment-chip Tb4b4b4{
@apply flex items-center justify-between gap-2 border border-gray-200 Te6edf3darkTb4b4b4:Tff7b72borderTff7b72-Te6edf3zinc-800 Te6edf3rounded-full Te6edf3px-3 Te6edf3py-1 Tff7b72textTff7b72-Te6edf3xs Te6edf3shadow-smTb4b4b4;
Tff7b72background-colorTb4b4b4: Tff7b72whiteTb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364dark Tb4b4b4.T56d364attachment-chip Tb4b4b4{
Tff7b72background-colorTb4b4b4: Tffa657rgbTb4b4b4(T79c0ff24 T79c0ff24 T79c0ff27Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364attachment-chip__remove Tb4b4b4{
@apply inline-flex items-center justify-center text-gray-500 Te6edf3darkTb4b4b4:Tff7b72textTff7b72-Tff7b72grayT79c0ff-300 Te6edf3hoverTff7b72:Tff7b72textTff7b72-Tff7b72redT79c0ff-500Tb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364attachment-action-button Tb4b4b4{
@apply inline-flex items-center gap-1 rounded-full border border-gray-200 px-3 py-1.5 text-xs font-bold text-gray-700 bg-white shadow-sm transition-all !importantTb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364attachment-action-buttonTb4b4b4:Tf0883ehover Tb4b4b4{
@apply bg-gray-50 text-gray-900 border-blue-400 !importantTb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364dark Tb4b4b4.T56d364attachment-action-button Tb4b4b4{
@apply border-zinc-700 text-zinc-100 bg-zinc-900 !importantTb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364dark Tb4b4b4.T56d364attachment-action-buttonTb4b4b4:Tf0883ehover Tb4b4b4{
@apply bg-zinc-800 text-white border-blue-500 !importantTb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364compose-emoji-picker Tb4b4b4{
Tff7b72widthTb4b4b4: T79c0ff100Tffa657%Tb4b4b4;
Tff7b72heightTb4b4b4: Td2a8ffminTb4b4b4(T79c0ff320Tffa657pxTb4b4b4, T79c0ff50Tffa657vhTb4b4b4)Tb4b4b4;
Tff7b72min-heightTb4b4b4: T79c0ff220Tffa657pxTb4b4b4;
Te6edf3--border-radiusTb4b4b4: T79c0ff0.75Tffa657remTb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364audio-controls-light Tb4b4b4{
Tff7b72filterTb4b4b4: Tffa657invertTb4b4b4(T79c0ff1Tb4b4b4) Tffa657hue-rotateTb4b4b4(T79c0ff180Tffa657degTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364dark Tb4b4b4.T56d364audio-controls-light Tb4b4b4{
Tff7b72filterTb4b4b4: Tff7b72noneTb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364audio-controls-dark Tb4b4b4{
Tff7b72filterTb4b4b4: Tff7b72noneTb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364dark Tb4b4b4.T56d364audio-controls-dark Tb4b4b4{
Tff7b72filterTb4b4b4: Tffa657invertTb4b4b4(T79c0ff1Tb4b4b4) Tffa657hue-rotateTb4b4b4(T79c0ff180Tffa657degTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364markdown-content Tb4b4b4:Tf0883edeepTff7b72(Tff7b72pTff7b72) Tb4b4b4{
Tff7b72marginTb4b4b4: T79c0ff0.5Tffa657rem T79c0ff0Tb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364markdown-content--single-emoji Tb4b4b4{
Tff7b72line-heightTb4b4b4: T79c0ff1Tb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364markdown-content--single-emoji Tb4b4b4:Tf0883edeepTff7b72(Tff7b72pTff7b72) Tb4b4b4{
Tff7b72marginTb4b4b4: T79c0ff0Tb4b4b4;
Tff7b72line-heightTb4b4b4: T79c0ff1Tb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364markdown-content Tb4b4b4:Tf0883edeepTff7b72(Tff7b72strongTff7b72) Tb4b4b4{
Tff7b72font-weightTb4b4b4: T79c0ff700Tb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364markdown-content Tb4b4b4:Tf0883edeepTff7b72(Tff7b72emTff7b72) Tb4b4b4{
Tff7b72font-styleTb4b4b4: Tff7b72italicTb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364markdown-content Tb4b4b4:Tf0883edeepTff7b72(Tff7b72preTff7b72) Tb4b4b4{
Tff7b72marginTb4b4b4: T79c0ff0.75Tffa657rem T79c0ff0Tb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364markdown-content Tb4b4b4:Tf0883edeepTff7b72(Tff7b72codeTff7b72) Tb4b4b4{
Tff7b72font-familyTb4b4b4: Te6edf3ui-monospaceTb4b4b4, Te6edf3SFMono-RegularTb4b4b4, Te6edf3MenloTb4b4b4, Te6edf3MonacoTb4b4b4, Te6edf3ConsolasTb4b4b4, Ta5d6ff"Liberation Mono"Tb4b4b4, Ta5d6ff"Courier New"Tb4b4b4, Tff7b72monospaceTb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364markdown-content Tb4b4b4:Tf0883edeepTff7b72(Tff7b72h1Tff7b72)Tff7b72,
Tb4b4b4.T56d364markdown-content Tb4b4b4:Tf0883edeepTff7b72(Tff7b72h2Tff7b72)Tff7b72,
Tb4b4b4.T56d364markdown-content Tb4b4b4:Tf0883edeepTff7b72(Tff7b72h3Tff7b72) Tb4b4b4{
Tff7b72line-heightTb4b4b4: T79c0ff1.2Tb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364markdown-content Tb4b4b4:Tf0883edeepTff7b72(Tff7b72aTff7b72) Tb4b4b4{
Tff7b72colorTb4b4b4: T79c0ff#0369a1Tb4b4b4;
Tff7b72text-decorationTb4b4b4: Tff7b72underlineTb4b4b4;
Tff7b72text-underline-offsetTb4b4b4: T79c0ff2Tffa657pxTb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364dark Tb4b4b4.T56d364markdown-content Tb4b4b4:Tf0883edeepTff7b72(Tff7b72aTff7b72) Tb4b4b4{
Tff7b72colorTb4b4b4: T79c0ff#7dd3fcTb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364markdown-content--outbound-theme Tb4b4b4:Tf0883edeepTff7b72(Tff7b72aTff7b72) Tb4b4b4{
Tff7b72colorTb4b4b4: T79c0ff#075985Tb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364dark Tb4b4b4.T56d364markdown-content--outbound-theme Tb4b4b4:Tf0883edeepTff7b72(Tff7b72aTff7b72) Tb4b4b4{
Tff7b72colorTb4b4b4: T79c0ff#bae6fdTb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364markdown-content--outbound-solid Tb4b4b4:Tf0883edeepTff7b72(Tff7b72aTff7b72) Tb4b4b4{
Tff7b72colorTb4b4b4: T79c0ff#dbeafeTb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364scroll-fab-enter-activeTff7b72,
Tb4b4b4.T56d364scroll-fab-leave-active Tb4b4b4{
Tff7b72transitionTb4b4b4:
Tff7b72opacity T79c0ff0.15Tffa657s Tff7b72easeTb4b4b4,
Tff7b72transform T79c0ff0.15Tffa657s Tff7b72easeTb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364scroll-fab-enter-fromTff7b72,
Tb4b4b4.T56d364scroll-fab-leave-to Tb4b4b4{
Tff7b72opacityTb4b4b4: T79c0ff0Tb4b4b4;
Tb4b4b4}
Tb4b4b4.T56d364reaction-emoji-picker Tb4b4b4{
Tff7b72widthTb4b4b4: T79c0ff100Tffa657%Tb4b4b4;
Tff7b72heightTb4b4b4: Td2a8ffminTb4b4b4(T79c0ff280Tffa657pxTb4b4b4, T79c0ff45Tffa657vhTb4b4b4)Tb4b4b4;
Tff7b72min-heightTb4b4b4: T79c0ff200Tffa657pxTb4b4b4;
Te6edf3--border-radiusTb4b4b4: T79c0ff0Tb4b4b4;
Te6edf3--border-sizeTb4b4b4: T79c0ff0Tb4b4b4;
Tb4b4b4}
Tb4b4b4<Tb4b4b4/Tff7b72styleTb4b4b4>
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────